views:

152

answers:

4

How can one easily test HTTP return codes, like, say, a 301 redirect?

For example, if I want to "see what's going on", I can use telnet to do something like this:

... $ telnet nytimes.com 80

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

GET / HTTP/1.0

(enter)

(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"&gt;
<html>    
<head>      
...

Which is an easy way to access quite some infos.

But now I want to test that a 301 redirect is indeed a 301 redirect.

How can I do so?

Basically, instead of getting a HTTP/1.1 200 OK I'd like to know how I can get the 301?

I know that I can enter the name of the URL in a browser and "see" that I'm redirected, but I'd like to know what tool(s) can be used to actually really "see" the 301 redirect.

Btw, I did test with a telnet, but when I enter www.example.org, which I redirected to example.org (without the www), all I can see is an "200 OK", I don't get to see the 301.

+1  A: 

The Firefox addon HTTP Live headers is quite useful for that.

Fabian
@Fabian: ah interesting, thanks for that link... However I was looking for something more "low level", like *telnet* :) Funnily I found a way to get my 301 two minutes after posting the question :)
NoozNooz42
A: 

OK, two minutes after answering the question I found the answer...

Doing the following doesn't work:

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

But the following works fine:

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

My error was to pass www.example.org to telnet (instead of example.org) and then not specifying any "Host: ".

Now it works, I get this:

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.
NoozNooz42
A: 

In the headers (of the telnet response) you'll see it in the first line:

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

Thanks

Mike Gleason jr Couturier
@Mike Gleason jr Couturier: actually you don't in the way I showed in the question, which was the whole point of my question :) Look at my answer to see why it wasn't working in the way I was trying using telnet and what needs to be done to make it work :)
NoozNooz42
You didn't had the 301 on the first line because it wasn't one. If the "www" version does it but not the "non-www" version, it's not the problem of telnet nor my answer. it's because one of the two URL does it and the other not. These are 2 different URLs.
Mike Gleason jr Couturier
A: 

I use Firebug's Net panel for this.

alt text

BalusC