URL с запросом без амперсандов, появляющихся в журналах ошибок - PullRequest
0 голосов
/ 07 июня 2010

Я недавно заметил, что в моих журналах ошибок появилось любопытное явление. Если в результате обработки формы я перенаправлю своих пользователей на URL http://www.example.com/index.php?foo=bar&bar=baz, я увижу следующие два URL в моем журнале

http://www.example.com/index.php?foo=barbar=baz
http://www.example.com/index.php?foo=bar&bar=baz

Первый, очевидно, неверен и заставит мое приложение перенаправить на 404. Он всегда появляется первым, обычно за секунду до второго. Страница 404 не выполняет перенаправление, поэтому кажется, что браузер пробует обе версии. Сначала просмотр журналов сервера заставил меня поверить, что это касается только Firefox 3.6.3, но я также нашел пример поражения Safari. Это происходит довольно периодически, хотя это может происходить несколько раз в сеансе пользователя. Я никогда не мог заставить это случиться со мной.

Есть мысли о природе проблемы или ее решения?

Редактировать: так как он встречался в некоторых ответах, я решил обсудить природу перенаправления. Это делается в PHP с использованием header() для установки заголовка Location. Я никогда не видел спецификацию, которая специально призывает заголовки быть в кодировке URL или HTML, поэтому URL не кодируются и не экранируются каким-либо образом.

Ответы [ 2 ]

0 голосов
/ 07 июня 2010

Не уверен, как вы делаете перенаправление, но вам может понадобиться URL-кодирование вашего URL.Возможно, браузер неверно истолковывает символ barr как специальный символ.

Может потребоваться просмотреть: http://htmlhelp.com/tools/validator/problems.html

0 голосов
/ 07 июня 2010

Не думаю, что это будет браузер. Посмотрите, есть ли какие-либо изображения, вызываемые на странице, или есть ли строковая функция, которая удаляет амперсанд. Странно, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...