2010-06-14 19 views
7

Come si possono testare facilmente i codici di ritorno HTTP, come, ad esempio, un reindirizzamento 301?Come testare un reindirizzamento HTTP 301?

Per esempio, se voglio "vedere che cosa sta succedendo", posso usare telnet a fare qualcosa di simile:

... $ telnet nytimes.com 80

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

GET/HTTP/1,0

(enter)

012.

(entrare)

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

Che è un modo semplice per accedere ad alcune informazioni abbastanza.

Ma ora voglio testare che un reindirizzamento 301 è in effetti un reindirizzamento 301.

Come posso fare?

Fondamentalmente, invece di ottenere un HTTP/1.1 200 OK Mi piacerebbe sapere come posso ottenere il 301?

So che posso immettere il nome dell'URL in un browser e "vedere" che sono reindirizzato, ma mi piacerebbe sapere quali strumenti possono essere utilizzati per realmente "vedere" il 301 reindirizza.

Btw, ho fatto un test con un telnet, ma quando ho inserito www.example.org, che ho reindirizzato a example.org (senza www), tutto quello che posso vedere è un "200 OK", non lo faccio 't vedere il 301.

risposta

2

OK, due minuti dopo aver risposto alla domanda che ho trovato la risposta ...

Facendo la seguente non funziona:

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

Ma il seguente funziona bene:

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

Il mio errore era passare www.example.org a telnet (anziché example.org) e quindi non si specifica alcun "Host:".

Ora funziona, ottengo questo:

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. 

Nota: In Windows Vista/7, Client Telnet non è installato per impostazione predefinita.Per installarlo, seguire le istruzioni qui: Install Telnet Client - Microsoft TechNet

+0

Questo non funziona su Windows 7 – Krunal

1

L'addon di Firefox HTTP Live headers è abbastanza utile per questo.

+0

ah interessante, grazie per questo link ... Comunque ero alla ricerca di qualcosa di più "basso livello", come * telnet * :) Funnily ho trovato un modo per ottenere il mio 301 due minuti dopo aver postato la domanda :) – NoozNooz42

1

nelle intestazioni (della risposta telnet) vedrete che nella prima riga:

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 

Grazie

+0

in realtà non lo faccio nel modo in cui ho mostrato nella domanda, che era il punto intero dei miei articoli on :) Guarda la mia risposta per capire perché non stava funzionando nel modo in cui stavo provando a usare Telnet e cosa fare per farlo funzionare :) – NoozNooz42

+0

Non hai avuto il 301 sulla prima riga perché non era Uno. Se la versione "www" lo fa ma non quella "non-www", non è il problema di telnet né la mia risposta. è perché uno dei due URL lo fa e l'altro no. Questi sono 2 URL diversi. –

15

Un gran lunga più conveniente soluzione a mio parere è quello di utilizzare Curl.

eseguire semplicemente:

$ curl -I http://example.com 

e restituirà le intestazioni HTTP come questo

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

Un modo per verificare è quello di specificare un redirect 301 sul sito di destinazione e utilizzare curl -L opzione per informarti di 301 reindirizzamenti.

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

Ad esempio:

:~$ curl -IL mail.com 

si ottiene:

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 
Problemi correlati