Xpoint
   [напомнить пароль]

Как узнать имя страницы возвращаемой сервером при запросе корня?

Метки: [без меток]
2006-07-28 18:21:11 [обр] Дмитрий Зюков[досье]

Приветствую всех.
Собственно сабж.
Браузер, если я ввожу URL вида http://www.server.name/, отображает мне http://www.server.name/index.htm
Возвращаемый файл может быть и index.html, и index.php, и default.asp, например. Как узнать имя страницы скриптом?
Думал что юзая поле Location возвращаемого HTTP заголовка смогу решить свой вопрос, но это поле в получаемых ответах отсутствует. Куда копать?

ЗЫ. Пишу скриптик на перле, библиотека LWP.

Заранее благодарю.

спустя 12 минут [обр] Алексей Севрюков(6/1292)[досье]
Дмитрий Зюков[досье] Удаленно узнать если я правильно понял? AFAIK никак.
спустя 1 час 17 минут [обр] Дмитрий Зюков[досье]
Удаленно?
Нет. Мой скрипт запрашивает хост без указания страницы. В ответ получает контекст страницы. Но я еще хочу знать имя этой (домашней) страницы. Как?
спустя 13 минут [обр] Алексей Севрюков(6/1292)[досье]
Дмитрий Зюков[досье] Это и есть удаленно. Вы же не определяете запрошенную страницу с хоста, с которого ее запрашиваете. Все зависит от веб-сервера, Apache не дает никаких дополнительных Location, а просто при запросе корня проверяет по списку DirectoryIndex и при совпадении отдает файл. Следовательно узнать какой файл корня узнать Вы никак не можете.
спустя 7 минут [обр] Дмитрий Зюков[досье]

Я тоже так думал, но как его "узнает" браузер? ИЕ, например, в адресной строке указывает имя файла после отработки запроса, а чем мой скрипт хуже?
Ну да ладно, это уже видимо офтоп.

Благодарю.

спустя 6 минут [обр] Владимир Михайленко(0/33)[досье]
IE ничего не узнает, это настройка Apache (в общем случае - сервера) - смотрите DirectoryIndex.
спустя 8 минут [обр] Дмитрий Зюков[досье]
Тогда почему запрос к одному и тому же ресурсу из ИЕ и моего скрипта дает ИЕ информацию о имени страницы а скрипту нет?
Сервер то один, а результат разный. Откуда ИЕ узнает что страница зовется index.php? А мой скрипт поле Location не видит в упор.
спустя 4 минуты [обр] Дмитрий Зюков[досье]
Более того, если я методу GET передаю полный ЮРЛ с указанием и страницы, поле Location все равно отсутсвует в возвращаемом ответе.
спустя 1 час [обр] Алексей Севрюков(6/1292)[досье]

Дмитрий Зюков[досье] Покажите пожалуйста пример где IE "узнает" информацию об имени индексного файла?

И с чего Вы взяли что сервер постоянно должен слать Location? Location всего лишь говорит браузеру что он должен открыть страницу указанную в Location при редиректе, т.е. это не URL текущего документа.

спустя 34 минуты [обр] Владимир Михайленко(0/33)[досье]
А вы просто попробуйте запросить из Perl http://www.server.name/ , не заморачиваясь на индексных файлах. Как я понимаю задача именно в этом.
спустя 50 минут [обр] Дмитрий Зюков[досье]

Владимир Михайленко[досье] В том то и дело что задача именно в получении имени файла.
Почему? Потому что интересуемый сайт сконструирован так, что все ссылки (которые я хочу скриптом просмотреть) имеют вид "<a href='?id=XXX&data=YYY'>". Браузер смотрит их корректно преобразуя в вид http://www.server.name/index.php?id=XXX&data=YYY, а мой скрипт этого сделать не может по причине "незнания" имени "index.php".
Вот как узнать какой файл сервер возвращает браузеру? Не настройки сервера, а какой файл, реально, отдает сервер.
Для справки: поле BASE HTTP заголовка этой информации не содержит.

Алексей Севрюков[досье] Я не настаиваю что сервер должен слать Location, просто думал что это именно то, что мне нужно. Простите.

спустя 13 минут [обр] Владимир Михайленко(0/33)[досье]
http://www.server.name/?id=XXX&data=YYY - а разве так не работает?
спустя 3 часа 44 минуты [обр] Алексей Севрюков(6/1292)[досье]

Дмитрий Зюков[досье] Вы где то ошибаетесь. Браузер не определяет эти пути и не подставляет его. Это скрипт отдает HTML, в котором уже прописан этот index.php (и прописал его туда разработчик сайта). И если бы он там прописан не был - Вы бы никак не узнали бы имя индексного файла.

Если Вы не хотите "светить" интересующий Вас сайт - найдите и покажите другой.

Еще раз повторять:

  1. браузер ничего не знает об имени индексного файла, он вообще ничего не знает ни о каких файлах, он ориентируется только на пришедший в него документ (как правило это HTML).
  2. Сервер не передает никакой информации по названию индексного файла. Когда к нему приходит запрос корня сайта (или директории, без указания имени файла в ней) он ищет в этой директории файл который соотвествуюет списку, объявленном с помощью директивы DirectoryIndex. Если он находит файл - он его просто отдает клиенту его содержимое (в случае статики), либо выполняет его (в случае если это скрипт). Если такого файла нет: в случае если прописан Options -Indexes будет ошибка 403 Forbidden, если Options +Indexes - будет показан список файлов в этой директории встроенными средствами Apache.
спустя 7 часов [обр] Дмитрий Зюков[досье]

Владимир Михайленко[досье] Странно, но работает. Непойму в чем у меня был затык?!
ННда. Благодарю.

Алексей Севрюков[досье] Я не настаиваю что прав, и с п.2 я знаком, а вот п.1 ...
Ну вообщем скрипт чудесным образом заработал, за что всех благодарю.

спустя 2 часа 47 минут [обр] Алексей Севрюков(6/1292)[досье]
Дмитрий Зюков[досье] Мне все-таки очень хотелось бы разобраться. Да и "чудеса" в программировании больше мешают, чем помогают. Дело Ваше в принципе, не хотите разбираться - не будем.
спустя 9 часов [обр] Сергей Чернышев(0/589)[досье]
Поставьте себе Fiddler и посмотрите что выдает ваш IE.
спустя 1 день 12 часов [обр] Дмитрий Зюков[досье]

Алексей Севрюков[досье] Кто же сказал что не хочу. Как раз вот разобрался. Ситуация до анегдотичной смешная. Началось все с того, что интересующий меня сайт не скачался телепортом. Выругался, что информации по указанному адресу нет и отвалился.
Но я же умный! Я давай смотреть на код страницы, и искать имя индексного файла :-) А мозгов не хватило ПОПРОБОВАТЬ оформить запрос как Владимир Михайленко[досье] предложил. Собственно все. Прошу всех простить за ненужные волны.

P.S. Алексей Севрюков[досье] Вы полностью правы, я даже опыт поставил :-), сервер никакой информации о файле клиенту не отдает. Сущая правда.

Сергей Чернышев[досье] благодарю, чудесная утилитка.

Powered by POEM™ Engine Copyright © 2002-2005