Double slash в URL

Brand from Amber
На сайте с 18.08.2007
Offline
291
595

Hi.

Возьмём 2-а URL:

Визуально они разные. Get запросы тоже разные, во втором случае:

GET //catname///filename.html HTTP/1.1

т.е. на стороне клиента слеши не удаляются. А на серверной стороне мне отдаётся уже site.ru/catname/filename.html (т.е. с удалёнными дублями слешей).

Вопросы: кто удаляет слеши (видимо веб-сервер), на каком основании (в RFC2068 и RFC1738 ничего не нашел) и как всётаки получить оригинальный GET ?.

Лучший способ понять что-то самому - объяснить это другому.
[umka]
На сайте с 25.05.2008
Offline
456
#1
Brand from Amber:
А на серверной стороне мне отдаётся уже site.ru/catname/filename.html (т.е. с удалёнными дублями слешей).

каким образом серверная стороная вам это отдаёт?

проверки ради вызвал скриптик "///script.php" и он мне показал во всех переменных (в т.ч. и в $_SERVER["REQUEST_URI"]) значение с тремя слешами.

Лог в помощь!
smscat
На сайте с 23.02.2006
Offline
50
#2

Дело в POSIX. По его спецификации каталог обозначается не пустым местом, а точкой, а пустое место каталога не означает. то есть // это / и потому второй слеш удаляет системная библиотека работы с файлами любого *nix.

Brand from Amber
На сайте с 18.08.2007
Offline
291
#3
Сообщение от [umka]
каким образом серверная стороная вам это отдаёт?

IIS 6 + ASP. (сорри) Допустим - Request.ServerVariables ("URL").

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий