Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2009-03-17

Завершающие слеши в урлах

Сегодня узнал еще один аргумент ЗА. За то, чтобы в урлах ставить завершающий слеш, при ссылках на каталог. Допустим, на сайте есть каталог test. А в нем есть файл index.html. И вебсервер настроен так, что показывает индексный файл при обращении к каталогу. Обычное дело. Но не все знают, что при обращении к серверу по урлу заканчивающемуся без слеша (бла.../test) сервер возвращает в браузер сообщение о перенаправлении:
HTTP/1.1 301 Moved Permanently
Location: http://бла...бла.../test/

заставляя браузер отправить этот же урл, но уже со слешем.
И все бы ничего. Каналы толстые, компы быстрые, никто и не заметит.

Но если на сервере конфиг посложнее умолчального, а, например, с переписыванием урлов и обратным проксированием, то все усложняется.
На этом я и заторчал сегодня. Запрос без слеша пойдет в бэкэнд уже переписанным от имени прокси. А бэкэнд, допустим есть сервер 127.0.0.1:999. Тогда предложение о редиректе попадет в браузер от имени бэкэнда и браузер попытается получить ответ по урлу http://127.0.0.1:999/бла../test/

И жестоко обломается.
И остается либо ИИ прикручивать к фронтэнду, либо избавляться от каталогов без завершающего слеша в урлах.
Я, конечно, попробую прикрутить интеллект к фронтэнду, чтобы он научился отличать правильные редиректы от неправильных, но шансов немного. Лучше уж слеши аккуратно писать.
А с редиректами - жопа. Это же распространненое средство. Что ни форма, то редирект. Как жить?

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)