我如何找出浏览器如何对输入到地址栏中的URI进行编码

问题描述 投票:0回答:1

encodeUri和encodeUriComponent的mdn文档描述了单引号没有被编码,因为它们在没有编码的url中是有效的,并且这在浏览器中的工作方式相同。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

但是浏览器地址栏似乎具有自己的URI编码规则。如果您在Chrome或Safari中将单引号放入URI中,它将被编码为%27,Firefox似乎也会这样做,然后可能会再次漂亮地将其打印为单引号字符

即导航至chrome中的网址之前:enter image description here

点击进入/导航到网址后enter image description here

我似乎找不到任何有关浏览器如何在其地址栏中对它们进行编码的文档。我只用单引号引起来,但是很好奇为什么这与用于编码的javascript实现不同,为什么在规范说还可以的情况下完全对其进行编码。

javascript google-chrome firefox safari
1个回答
0
投票

我自己也想知道这一点。发生的情况是将值转换为十六进制数据(例如'如何变成27),然后在前面添加%来区分字符与URL的其余部分。显示数据时,对于FireFox,它将恢复为原始格式。 Here's a good website to see what I'm talking about.

我认为浏览器这样做的原因是为了防止XSS攻击,但我不确定100%。

© www.soinside.com 2019 - 2024. All rights reserved.