Firefox автоматически декодирует URL? CodeIgniter разрешил проблему с символами - PullRequest
0 голосов
/ 31 января 2011

При посещении этого адреса в w3schools% 28 в адресе автоматически декодируется в (в адресной строке Firefox, как только я нажимаю enter, чтобы загрузить страницу.

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 голосов
/ 07 июля 2011

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-адреса с помощью безопасного URL-адреса base64 (http://www.php.net/manual/en/function.base64-encode.php#103849) вместо urlencode

  2. измените символы "%" на что-то другое после urlencoding

...