浏览器现在忽略HTML编码的&符号?

时间:2017-11-09 19:24:14

标签: html

我一直看到的传统观点是,面向用户的文本和hrefs的&符号需要进行编码,这样他们就不会搞砸HTML的解析。我也看到了相互矛盾的建议,即HTML 5现在已经放宽了这些约定的必要性,以便您可以传递类似

的内容
<a href="somepage.html?x=1&y=2">...</a>

它会渲染得很好。

当我用编码的&符号(如

)编写HTML时,我一直在看
<a href="somepage.html?x=1&amp;y=2">...</a>

,Chrome,Safari,Firefox等现代浏览器直接对待编码字符串。当我点击那个href时,那些浏览器会将我带到URL somepage.html?x = 1&amp; amp; y = 2而不是URL somepage.html?x = 1&amp; y = 2。

这已经打破了一些外部链接的功能。假设我在我的网站中嵌入了一个外部链接,用于MP3之类的音频资产,用于一些属于我无法控制的第三方提供商的点播音乐。当我把它设置为somepage.html?x=1&y=2之类的未编码时,浏览器会将我带到URL somepage.html?x=1&y=2并且MP3下载就好了。当我把它编码为somepage.html?x=1&amp;amp;y=2时,浏览器会将我带到URL somepage.html?x=1&amp;amp;y=2,而MP3根本不会下载。链接所属的网站会给出空白回复。

为什么这些浏览器会忽略编码的&符号并按字面意思处理href字符串?这是否意味着我们真的不再需要为链接编码&符号?现在将链接放在hrefs中是安全的吗?在这方面,现在有可能HTML编码&符号实际上可能对某个第三方提供商的MP3示例中的网站功能有害吗?

0 个答案:

没有答案