Javascript 编码撇号已转换为%27
我想访问以下链接:Javascript 编码撇号已转换为%27,javascript,google-chrome,encoding,uri,Javascript,Google Chrome,Encoding,Uri,我想访问以下链接: http://localhost:8080/lookups/TagGroup.html? is_guideline_tag=true&field_name=%3C%3Ealert('1')%3E&tag_group_id=38 但当我将其粘贴到浏览器(Chrome 63.0.3239.84)时,它会变成: http://localhost:8080/lookups/TagGroup.html? is_guideline_tag=true&am
http://localhost:8080/lookups/TagGroup.html?
is_guideline_tag=true&field_name=%3C%3Ealert('1')%3E&tag_group_id=38
但当我将其粘贴到浏览器(Chrome 63.0.3239.84)时,它会变成:
http://localhost:8080/lookups/TagGroup.html?
is_guideline_tag=true&field_name=%3C%3Ealert(%271%27)%3E&tag_group_id=38
因此撇号被替换为%27
,我无法访问该链接
我还想提到我上面链接中的字段名称是这样获得的:encodeURIComponent(“警报('1')>”)
,它应该返回%3C%3Ealert('1')%3E
有什么想法吗
因此撇号被%27替换,我无法访问链接
%27
是在URI编码字符串(URL中的查询字符串是URI编码的)中包含'
的正确、最新的方法。如果您在服务器端遇到问题,听起来好像您没有正确解码URI。这就是你需要解决的问题。如果您对字段进行URI解码,该字段就可以了:
console.log(解码组件(“%3C%3Ealert(%271%27)%3E”)代码>为什么参数中有代码?这是一个相当大的安全风险…field\u name=alert(**'1'**)>
?什么?实际上是字段\ u name=alert('1')>。星号应该包含粗体文字,因为我想强调问题出现的地方。真的是这样吗?1.Chrome只编码”
,而不编码其他保留字符。2.RFC3986将允许的查询字符定义为*(pchar/“/”/“?”
,其中pchar包括”
@Hurelu-谢谢!是的,我不明白为什么Chrome会改变,
,但不是说,代码>,因为两者都在子文档中。我相信他们是有原因的。我已经调整了答案。