2016-09-15 108 views
2

我抓取網頁數據(認爲類似的問題爲instapaper)並將其發送回LOCAL服務器,而不是通過網絡。兩者都將在同一臺機器上,但我仍然希望使它更安全一些。2016將html發送到服務器

我目前從網頁抓取HTML並嘗試將其編碼爲URI。這是問題。內置函數encodeURI無法正常工作,因爲HTML頁面中的某些內容已經被編碼,其中一些內容不是!就像HTML本身一樣。讓我舉一個例子(decades old website that still exists)。

此代碼:

<title>You've Got Mail</title>需要被編碼爲:"%3Ctitle%3EYou've%20Got%20Mail%3C/title%3E"

但是其中一些來自於預編碼(前encodeURI叫):

<noframes> &lt;body bgcolor="#FFFFFF" background="../img/1bgbottom.gif" text="#000000" link="#2100c5" vlink="#2100c5" alink="#bd0031"&gt;

有任何簡單的方法來採取一個HTML頁面(總之是醜陋的),並將其編碼在一個可靠的URI?

回答

0

您正在尋找encodeURIComponent()。對於encodeURI(),從來沒有一個很好的理由(我知道無論如何)。

一旦你使用encodeURIComponent(),它可以被解碼原來的樣子,讓你到底是什麼在發送。

在另一方面,我不知道,你這樣做是編碼,但如果你打算在查詢字符串中使用它,注意有限的查詢字符串限制,通常爲4k或64k。 (至少有時你可以配置限制服務器端。)

+0

你不能只編碼爲base64?附:如果使用GET方法命中查詢字符串長度限制,則始終可以切換到POST併發送所有數據。 –

+0

@LukasLiesis當然,base64是另一種保證33%開銷的二進制兼容性的方法。 – Brad