2016-09-15 84 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