2010-06-14 30 views
7

Làm cách nào để dễ dàng kiểm tra mã trả lại HTTP, ví dụ như, chuyển hướng 301?Làm cách nào để kiểm tra chuyển hướng HTTP 301?

Ví dụ, nếu tôi muốn "nhìn thấy những gì đang xảy ra", tôi có thể sử dụng telnet để làm một cái gì đó như thế này:

... $ telnet nytimes.com 80

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

GET/HTTP/1,0

(nhập)

012.

(nhập)

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

Đó là một cách dễ dàng để truy cập khá một số infos.

Nhưng bây giờ tôi muốn kiểm tra xem chuyển hướng 301 có thực sự là chuyển hướng 301 hay không.

Tôi làm như thế nào?

Về cơ bản, thay vì nhận được HTTP/1.1 200 OK Tôi muốn biết làm cách nào tôi có thể nhận được 301?

Tôi biết rằng tôi có thể nhập tên của URL trong trình duyệt và "xem" mà tôi được chuyển hướng, nhưng tôi muốn biết (các) công cụ nào có thể được sử dụng để thực sự "xem" Chuyển hướng 301.

Btw, tôi đã kiểm tra bằng telnet, nhưng khi tôi nhập www.example.org, tôi chuyển hướng đến example.org (không có www), tất cả những gì tôi có thể thấy là "200 OK", tôi không không thể xem 301.

Trả lời

2

OK, hai phút sau khi trả lời các câu hỏi tôi tìm thấy câu trả lời ...

Làm như sau không làm việc:

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

Nhưng sau hoạt động tốt:

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

Lỗi của tôi là vượt qua www.example.org đến telnet (thay vì example.org) và sau đó không chỉ định bất kỳ "Máy chủ:".

Bây giờ nó hoạt động, tôi có được điều này:

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. 

Lưu ý: Trên Windows Vista/7, Telnet Client không được cài đặt theo mặc định.Để cài đặt nó, hãy làm theo các hướng dẫn ở đây: Install Telnet Client - Microsoft TechNet

+0

Điều này không làm việc trên windows 7 – Krunal

1

Tiện ích bổ sung Firefox HTTP Live headers khá hữu ích cho điều đó.

+0

ah thú vị, nhờ liên kết ... Tuy nhiên tôi đang tìm kiếm một cái gì đó nhiều hơn "mức thấp", như * telnet * :) Funnily tôi tìm thấy một cách để có được 301 của tôi hai phút sau khi gửi câu hỏi :) – NoozNooz42

1

Trong các tiêu đề (của phản ứng telnet), bạn sẽ thấy nó trong dòng đầu tiên:

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 

Cảm ơn

+0

thực sự bạn không theo cách tôi đã cho thấy trong câu hỏi, đó là toàn bộ điểm của questi của tôi on :) Nhìn vào câu trả lời của tôi để xem tại sao nó không hoạt động theo cách tôi đang thử sử dụng telnet và cần làm gì để làm việc đó :) – NoozNooz42

+0

Bạn không có 301 trên dòng đầu tiên vì nó không 'tấn. Nếu phiên bản "www" có nhưng không phải là phiên bản "không phải www", thì đó không phải là vấn đề của telnet hay câu trả lời của tôi. đó là bởi vì một trong hai URL thực hiện nó và cái kia thì không. Đây là 2 URL khác nhau. –

15

Một giải pháp thuận tiện hơn trong quan điểm của tôi là sử dụng Curl.

Đơn giản chỉ cần chạy:

$ curl -I http://example.com 

Và nó sẽ trở lại tiêu đề HTTP như thế này

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

Một cách để kiểm tra nó là để xác định một 301 trên trang web mục tiêu và sử dụng curl -L tùy chọn để thông báo cho bạn về chuyển hướng 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. 

Ví dụ:

:~$ curl -IL mail.com 

Bạn nhận:

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 
Các vấn đề liên quan