Лишние слеши в URL плохо?
Я заметил, что https://stackoverflow.com//////////questions/4659504/ является допустимым URL. Однако https://www.google.com//////////analytics/settings нет. Существуют ли различия, присущие технологиям веб-серверов, которые объясняют это? Следует ли правильно интерпретировать url-адрес с ненужными косыми чертами или он должен возвращать ошибку?
4 ответов
прежде всего, добавление косой черты изменяет семантику URL-пути, как и любой другой символ. Так по определению /foo/bar
и /foo//bar
не эквивалентны, так как /foo/bar
и /foo/bar/
не эквивалентны.
но поскольку URL-путь в основном используется для непосредственного сопоставления с файловой системой, веб-серверы часто удаляют пустые сегменты пути (Apache делает это), так что /foo//bar
и /foo/bar
are обрабатывается аналогично. Но это не ожидаемое поведение; это скорее сделано для исправления ошибок.
Они оба являются допустимыми URL-адресами.
Однако сервер Google не может справиться со вторым.
нет никакой конкретной причины обрабатывать или отклонять URL-адреса с повторяющимися косыми чертами; вы должны тратить больше времени на более важные вещи.
Что вы считаете "правильно толковать"? Http только действительно specifices, как вещи в передней части Слэш после имени сервера получает толкование. Остальное полностью зависит от веб-сервера. Он анализирует то, что вы даете ему после этого момента (любым способом), и представляет вам любой HTML, который он чувствует, как предоставление этого текста.
есть разница в том, как каждое приложение обрабатывать запросы. Если вы настроили приложение для замены последующих косых черт перед маршрутизацией запроса, у вас не должно быть никаких проблем.