Вот такая проблема. Имеется, к примеру, URL в такой форме —
http://www.server.com/subdir
Его "правильная" форма должна быть
http://www.server.com/subdir/, потому как в реальности, это директория на сервере с каким-то дефолтным файлом внутри (z.B. index.html). К сожалению WinInet функции типа HttpOpenRequest одинаково выполняют соединение с обоими вариантами написания УРЛ.
Знает ли кто способ, как узнать с помощью WinInet реальный локейшн такого соединения? Как делают это браузеры? Например, если в браузере напечатать
http://www.server.com/subdir и нажать ентер, то браузер перейдет на
http://www.server.com/subdir/. В то же время, в случае если subdir — имя файла без расширения, то браузер корректно отобразит его как файл
http://www.server.com/subdir
Здравствуйте, Аноним, Вы писали:
А>Знает ли кто способ, как узнать с помощью WinInet реальный локейшн такого соединения?
InternetQueryOption(hRequest, INTERNET_OPTION_URL ...
Здравствуйте, Аноним, Вы писали:
А>Например, если в браузере напечатать http://www.server.com/subdir и нажать ентер, то браузер перейдет на http://www.server.com/subdir/. В то же время, в случае если subdir — имя файла без расширения, то браузер корректно отобразит его как файл http://www.server.com/subdir
Предполагаю, что дело не в браузере, а в сервере. Умный сервер для запроса
http://www.server.com/subdir в ситуации, когда subdir является директорией, возвращает 301 на
http://www.server.com/subdir/
А>К сожалению WinInet функции типа HttpOpenRequest одинаково выполняют соединение с обоими вариантами написания УРЛ.
Предпологаю, что ты вызываешь HttpOpenRequest без флага INTERNET_FLAG_NO_AUTO_REDIRECT, и 301 обрабатывается незаметно для тебя.
Здравствуйте, Aniskin, Вы писали:
A>Здравствуйте, Аноним, Вы писали:
А>>Например, если в браузере напечатать http://www.server.com/subdir и нажать ентер, то браузер перейдет на http://www.server.com/subdir/. В то же время, в случае если subdir — имя файла без расширения, то браузер корректно отобразит его как файл http://www.server.com/subdir
A>Предполагаю, что дело не в браузере, а в сервере. Умный сервер для запроса http://www.server.com/subdir в ситуации, когда subdir является директорией, возвращает 301 на http://www.server.com/subdir/
А>>К сожалению WinInet функции типа HttpOpenRequest одинаково выполняют соединение с обоими вариантами написания УРЛ.
A>Предпологаю, что ты вызываешь HttpOpenRequest без флага INTERNET_FLAG_NO_AUTO_REDIRECT, и 301 обрабатывается незаметно для тебя.
Точно, спасибо большое! Я почему-то думал, что даже без INTERNET_FLAG_NO_AUTO_REDIRECT полный хедер сервера должен содержать новый локейшн.