在浏览器中,我向someurl.com/route?url=<some other url>
提出请求。
这适用于大多数网址。当一个非ascii角色发挥作用时会出现问题。
假设我想要作为查询参数传递的网址是:https://ja.wikipedia.org/wiki/また
。
所以我encodeURIComponent
我的网址,现在我有:https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%E3%81%BE%E3%81%9F
并将请求发送至:someurl.com/route?url=https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%E3%81%BE%E3%81%9F
...仅收到400错误请求错误。为了让服务器接受我的输入并正确处理它,我必须对网址的また
部分进行编码,然后重新编码整个网址。我最终做encodeURIComponent(encodeURI(url))
,结果是:
https%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%25E3%2581%25BE%25E3%2581%259F
您可以看到また
部分是双重编码的。我正在试图判断这是否存在风险。
1)我希望编码一次。这是不正确的还是&#34;错误&#34;是不止一次的网址编码?
2)如果是,这表明存在安全问题?这是否意味着服务器不止一次解码?