0

在 w3schools 上访问此地址时,地址中的 %28 会在我按下回车键加载页面时自动解码为 ( 在 Firefox 地址栏中。

http://www.w3schools.com/TAGS/html_form_submit.asp?text=%28Hello+G

但是,当访问此地址时(末尾有一个额外的 %),地址栏中的地址不会被重写。

http://www.w3schools.com/TAGS/html_form_submit.asp?text=%28Hello+G%

谁能解释这种行为?它导致我正在处理的 AJAX 调用出现问题(当我发出请求时,来自 document.location.hash 值编码字符的网页会被自动解码,并且因为我使用的是 CodeIgniter,所以不允许解码的字符。

4

1 回答 1

-1

Firefox 仅解码有效地址,因此“text=%28Hello+G%”将保持不变(正确编码的“%”字符为“%25”)。

%28Hello+G - valid, decoded: (Hello G
%28Hello+G% - invalid: %28Hello+G%
%28Hello+G%25 - valid, decoded: (Hello G%

可能的解决方案:

  1. 使用 url safe base64 (http://www.php.net/manual/en/function.base64-encode.php#103849) 而不是 urlencode 对您的 url 进行编码

  2. 在 urlencoding 之后将“%”字符更改为其他字符

于 2011-07-07T13:30:17.080 回答