Как проверить перенаправление HTTP 301? - PullRequest
7 голосов
/ 14 июня 2010

Как можно легко проверить HTTP-коды возврата, например, перенаправление 301?

Например, если я хочу "посмотреть, что происходит", я могу использовать telnet , чтобы сделать что-то вроде этого:

... $ telnet nytimes.com 80

Trying 199.239.136.200...
Connected to nytimes.com.
Escape character is '^]'.

GET / HTTP / 1.0

(введите)

(ввод)

HTTP/1.1 200 OK
Server: Sun-ONE-Web-Server/6.1
Date: Mon, 14 Jun 2010 12:18:04 GMT
Content-type: text/html
Set-cookie: RMID=007af83f42dd4c161dfcce7d; expires=Tuesday, 14-Jun-2011 12:18:04 GMT; path=/; domain=.nytimes.com
Set-cookie: adxcs=-; path=/; domain=.nytimes.com
Set-cookie: adxcs=-; path=/; domain=.nytimes.com
Set-cookie: adxcs=-; path=/; domain=.nytimes.com
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Cache-control: no-cache
Pragma: no-cache
Connection: close

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>    
<head>      
...

Какой простой способ получить доступ к некоторой информации.

Но теперь я хочу проверить, что перенаправление 301 действительно является перенаправлением 301.

Как я могу это сделать?

По сути, вместо получения HTTP / 1.1 200 OK Я хотел бы знать, как я могу получить 301?

Я знаю, что могу ввести имя URL-адреса в браузере и «увидеть», что я перенаправлен, но я хотел бы знать, какие инструменты могут быть использованы, чтобы действительно «увидеть» 301 перенаправление.

Кстати, я провел тест с помощью telnet, но когда я захожу на www.example.org, который я перенаправил на example.org (без www), все, что я вижу, это «200 OK», я не видеть 301.

Ответы [ 6 ]

16 голосов
/ 21 июля 2013

Гораздо более удобным решением на мой взгляд является использование Curl.

Просто запустите:

$ curl -I http://example.com

И он вернет HTTP-заголовки, подобные этому

HTTP/1.1 302 Moved Temporarily
Server: nginx/1.1.19
Date: Sun, 21 Jul 2013 10:41:47 GMT
Content-Type: text/html
Content-Length: 161
Connection: keep-alive
Location: https://other.example.com/
2 голосов
/ 14 июня 2010

ОК, через две минуты после ответа на вопрос я нашел ответ ...

Выполнение следующих действий не работает:

telnet www.example.org 80
GET / HTTP/1.0
{enter}
{enter}

Но отлично работает следующее:

telnet example.org 80
GET / HTTP/1.0
Host: www.example.org
{enter}
{enter}

Моя ошибка состояла в том, что я передал www.example.org на telnet (вместо example.org ), а затем не указывал "хост : ".

Теперь это работает, я получаю это:

Connected to xxx.xx
Escape character is '^]'.
GET / HTTP/1.0
Host: www.example.org

HTTP/1.1 301 Moved Permanently
Server: Apache-Coyote/1.1
Location: http://example.org/
Connection: close
Date: Mon, 14 Jun 2010 13:02:22 GMT
Connection: close

Connection closed by foreign host.

Примечание. В Windows Vista / 7 клиент Telnet по умолчанию не устанавливается. Чтобы установить его, выполните следующие действия: Установите клиент Telnet - Microsoft TechNet

1 голос
/ 07 февраля 2017

Один из способов проверить это - указать 301 перенаправление на целевом веб-сайте и использовать опцию curl -L, чтобы сообщить вам о 301 перенаправлении.

-L, --location

(HTTP) If the server reports that the requested page has moved to a different 
location (indicated with a Location: header and a 3XX response code), this option 
will make curl redo the request on the new place. 

Например:

:~$ curl -IL mail.com

Вы получаете:

HTTP/1.1 301 Moved Permanently
Date: Tue, 07 Feb 2017 13:17:12 GMT
Server: Apache
Location: https://www.mail.com/
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 302 Found
Date: Tue, 07 Feb 2017 13:17:13 GMT
Server: Apache
Vary: X-Forwarded-Proto,Host
Set-Cookie: cookieKID=kid%40autoref%40mail.com; Domain=.mail.com; Expires=Thu, 09-Mar-2017 13:17:13 GMT; Path=/
Set-Cookie: cookiePartner=kid%40autoref%40mail.com; Domain=.mail.com; Expires=Thu, 09-Mar-2017 13:17:13 GMT; Path=/
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Location: https://www.mail.com/int/
Content-Language: en-US
Connection: close

HTTP/1.1 200 OK
Date: Tue, 07 Feb 2017 13:17:13 GMT
Server: Apache
Vary: X-Forwarded-Proto,Host,Accept-Encoding
Set-Cookie: cookieKID=kid%40autoref%40mail.com; Domain=.mail.com; Expires=Thu, 09-Mar-2017 13:17:13 GMT; Path=/
Set-Cookie: cookiePartner=kid%40autoref%40mail.com; Domain=.mail.com; Expires=Thu, 09-Mar-2017 13:17:13 GMT; Path=/
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Set-Cookie: JSESSIONID=964DA3BD186E264928A8C188E3BB919D; Path=/mailcom-webapp/; HttpOnly
Content-Language: en-INT
Content-Length: 74356
Connection: close
Content-Type: text/html;charset=UTF-8
1 голос
/ 14 июня 2010

Я использую Firebug s Net панель .

alt text

1 голос
/ 14 июня 2010

В заголовках (ответа telnet) вы увидите его в первой строке:

HTTP/1.1 301 Moved Permanently
Via: XXXXXXXXXXX
Connection: close
Proxy-Connection: close
Content-Length: 0
Date: Mon, 14 Jun 2010 13:03:14 GMT
Location: /xxxxxxxxx
Server: XXXXXXX
Cache-Control: private

Спасибо

1 голос
/ 14 июня 2010

Дополнение Firefox HTTP Live заголовки весьма полезно для этого.

...