Как я могу получить путь URL после перенаправления - с помощью Javascript? - PullRequest
1 голос
/ 02 декабря 2008

Это может быть немного не по правилам, но друг спросил меня об этом, и это как-то беспокоит меня. Как определить текущий путь в адресной строке, если сервер перенаправляет все запросы в файл по умолчанию, скажем, index.html.

Допустим, вы ввели:

www.example.com/

И ваша конфигурация сервера автоматически перенаправляет этот запрос на

www.example.com/index.html

Но адрес в вашем URL-баре не меняется! Так как же с помощью Javascript выяснить, что путь к этому URL-адресу - index.html?

Я посмотрел на location.pathname, но это только дает мне /.

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 02 декабря 2008

Проблема в том, что на самом деле это не перенаправление. Когда вы набираете 'www.example.com' в своем веб-браузере, браузер генерирует HTTP-запрос, подобный следующему:

GET / HTTP/1.1
User-Agent: curl/7.16.3 (i686-pc-cygwin) libcurl/7.16.3 OpenSSL/
0.9.8h zlib/1.2.3 libssh2/0.15-CVS
Host: www.example.com
Accept: */*

Обратите внимание, что он запрашивает документ с буквальным названием /. Есть два возможных ответа от сервера:

HTTP/1.1 200 OK
(more headers)

Content...

И

HTTP/1.1 301 Moved Permanently
Location: (location of redirect)
(more headers)

(Optional content)

В случае № 2 вы можете получить местоположение перенаправления, поскольку оно фактически является перенаправлением. Но в случае № 1 сервер выполняет перенаправление: он видит запрос на / и вместо этого подает содержимое для любой его индексной страницы (например, index.html, index.php, default.aspx и т. Д.). Что касается вашего браузера, то это просто содержимое документа /. Он не знает, что он был перенаправлен.

4 голосов
/ 02 декабря 2008

Если перенаправление происходит на сервере, то браузер не знает об этом, и вы не можете получить доступ к фактическому ресурсу в javascript. Например, сервлет может «переслать» другому ресурсу на сервере.

Если сервер отправляет браузеру команду перенаправления, а браузер запрашивает новый URL-адрес, браузер знает об этом, и вы можете его получить.

1 голос
/ 02 декабря 2008

Нет способа сделать это, кроме как каким-то образом встроить имя файла веб-сервера в документ. Что касается браузера, то нет index.html, страница просто /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...