2010-06-14 13 views
7

W jaki sposób można łatwo przetestować kody powrotu HTTP, np. Przekierowanie 301?Jak przetestować przekierowanie HTTP 301?

Na przykład, jeśli chcę, aby "zobaczyć, co się dzieje", mogę używać telnet zrobić coś takiego:

... $ telnet NYTimes.com 80

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

GET/HTTP/1,0

(wprowadzania)

(enter)

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>  
... 

Która jest łatwym sposobem dostępu do dłuższego infos.

Ale teraz chcę przetestować, czy przekierowanie 301 rzeczywiście jest przekierowaniem 301.

Jak mogę to zrobić?

Zasadniczo, zamiast uzyskać HTTP/1.1 200 OK chciałbym wiedzieć, jak mogę uzyskać 301?

Wiem, że mogę wprowadzić nazwę adresu URL w przeglądarce i "zobaczyć", że jestem przekierowywany, ale chciałbym wiedzieć, jakie narzędzia mogą być używane, aby naprawdę "zobaczyć" Przekierowanie 301.

Btw, testowałem za pomocą telnetu, ale kiedy wchodzę na stronę www.example.org, którą przekierowałem do example.org (bez strony www), wszystko co mogę zobaczyć to "200 OK", ja wykładam zobacz 301.

Odpowiedz

2

OK, dwie minuty po odpowiedzi na pytanie znalazłem odpowiedź ...

wykonując następujące czynności nie działa:

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

Ale następujący działa dobrze:

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

Mój błąd polegał na przekazaniu www.example.org do telnet (zamiast example.org), a następnie nie określając żadnego hosta ".

Teraz to działa, mam to:

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. 

Uwaga: W systemie Windows Vista/7, Telnet Client nie jest instalowany domyślnie.Aby go zainstalować, postępuj zgodnie ze wskazówkami tutaj: Install Telnet Client - Microsoft TechNet

+0

To nie działa na windows 7 – Krunal

1

Dodatek Firefox HTTP Live headers jest bardzo przydatny do tego.

+0

ah ciekawe, dzięki za ten link ... Jednak szukałem czegoś bardziej "niski poziom", jak * telnet * :) Fajnie znalazłem sposób na zdobycie mojego 301 minut po zamieszczeniu pytania :) – NoozNooz42

1

w nagłówkach (odpowiedzi telnet) zobaczysz go w pierwszej linii:

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 

Dzięki

+0

w rzeczywistości nie robisz tego w sposób, który pokazałem w pytaniu, który był cały punkt mojego questi na :) Spójrz na moją odpowiedź, aby zobaczyć, dlaczego nie działa w sposób, w jaki próbowałem za pomocą Telnet i co należy zrobić, aby działało :) – NoozNooz42

+0

Nie miałeś 301 w pierwszej linii, ponieważ nie było jeden. Jeśli wersja "www" to robi, ale nie wersja "nie-www", to nie jest to problem telnetu ani moja odpowiedź. ponieważ jeden z dwóch adresów URL to robi, a drugi nie. To są 2 różne adresy URL. –

15

O wiele wygodniejsze rozwiązanie moim zdaniem jest użycie Curl.

Wystarczy uruchomić:

$ curl -I http://example.com 

I powróci nagłówki HTTP jak ten

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/ 
1

Jednym ze sposobów, aby przetestować to określić przekierowanie 301 na stronie docelowej i użyj curl -L opcję informuje o 301 przekierowaniach.

-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. 

Na przykład:

:~$ curl -IL mail.com 

Otrzymasz:

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 
Powiązane problemy