Firefox自动解码URL? CodeIgniter允许字符问题

时间:2011-01-31 15:57:26

标签: ajax codeigniter urlencode urldecode

在w3schools上访问此地址时,地址中的%28会自动解码为(在我按下Enter键加载页面时,在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,不允许解码的字符。

1 个答案:

答案 0 :(得分:-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

  2. 在urlencoding

  3. 之后将“%”字符更改为其他内容