导读:
今天,一个同事访问http://www.ibm.com.cn网站时,觉得很奇怪,明明键入的是http://www.ibm.com.cn,怎么IE自动把它变成了http://www.ibm.com/cn/,而且已访问结果也是正确的。他觉得很费解,IE难道有这么智能?
只要了解HTTP协议,以上转换的原理很简单,其过程大致如下:
1. 为了从www.ibm.com.cn上取得网页,浏览器做了类似下面的事情。
telnet www.ibm.com.cn 80
GET / HTTP/1.1
Host: www.ibm.com.cn
Accept-Languge: zh_CN
这时WEB服务器上返回如下内容:
HTTP/1.1 301 Moved Permanently
Date: Thu, 16 Feb 2006 12:14:13 GMT
Server: IBM_HTTP_Server
Location: http://www.ibm.com/link/redirect.www.ibm.com/www.ibm.com.cn/
Content-Length: 268
Content-Type: text/html
301 Moved Permanently
h1>Moved Permanently
根据HTTP协议里的规定,3开头的错误码表示重定向,并告诉浏览器从指定的URL重新获取文件。
2. 于是,浏览器又做了类似下面的事情。
telnet www.ibm.com 80
GET /link/redirect.www.ibm.com/www.ibm.com.cn/
Host: www.ibm.com.cn
Accept-Languge: zh_CN
这时WEB服务器上返回如下内容:
302 Found
还是重定向。
3. 于是,浏览器又做了类似下面的事情。
telnet www.ibm.com 80
GET /cn/ HTTP/1.1
Host: www.ibm.com.cn
Accept-Languge: zh_CN
这回终于得到了网面真正的内容。
参考: RFC 2616 中的错误码:
Status-Code = "100" ;Section 10.1.1: Continue | "101" ;Section 10.1.2: Switching Protocols | "200" ;Section 10.2.1: OK | "201" ;Section 10.2.2: Created | "202" ;Section 10.2.3: Accepted | "203" ;Section 10.2.4: Non-Authoritative Information | "204" ;Section 10.2.5: No Content | "205" ;Section 10.2.6: Reset Content | "206" ;Section 10.2.7: Partial Content | "300" ;Section 10.3.1: Multiple Choices | "301" ;Section 10.3.2: Moved Permanently | "302" ;Section 10.3.3: Found | "303" ;Section 10.3.4: See Other | "304" ;Section 10.3.5: Not Modified | "305" ;Section 10.3.6: Use Proxy | "307" ;Section 10.3.8: Temporary Redirect | "400" ;Section 10.4.1: Bad Request | "401" ;Section 10.4.2: Unauthorized | "402" ;Section 10.4.3: Payment Required | "403" ;Section 10.4.4: Forbidden | "404" ;Section 10.4.5: Not Found | "405" ;Section 10.4.6: Method Not Allowed | "406" ;Section 10.4.7: Not Acceptable | "407" ;Section 10.4.8: Proxy Authentication Required | "408" ;Section 10.4.9: Request Time-out | "409" ;Section 10.4.10: Conflict | "410" ;Section 10.4.11: Gone | "411" ;Section 10.4.12: Length Required | "412" ;Section 10.4.13: Precondition Failed | "413" ;Section 10.4.14: Request Entity Too Large | "414" ;Section 10.4.15: Request-URI Too Large | "415" ;Section 10.4.16: Unsupported Media Type | "416" ;Section 10.4.17: Requested range not satisfiable | "417" ;Section 10.4.18: Expectation Failed | "500" ;Section 10.5.1: Internal Server Error | "501" ;Section 10.5.2: Not Implemented | "502" ;Section 10.5.3: Bad Gateway | "503" ;Section 10.5.4: Service Unavailable | "504" ;Section 10.5.5: Gateway Time-out | "505" ;Section 10.5.6: HTTP Version not supported | extension-code
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=600658
本文转自
http://blog.csdn.net/absurd/archive/2006/02/16/600658.aspx
今天,一个同事访问http://www.ibm.com.cn网站时,觉得很奇怪,明明键入的是http://www.ibm.com.cn,怎么IE自动把它变成了http://www.ibm.com/cn/,而且已访问结果也是正确的。他觉得很费解,IE难道有这么智能?
只要了解HTTP协议,以上转换的原理很简单,其过程大致如下:
1. 为了从www.ibm.com.cn上取得网页,浏览器做了类似下面的事情。
telnet www.ibm.com.cn 80
GET / HTTP/1.1
Host: www.ibm.com.cn
Accept-Languge: zh_CN
这时WEB服务器上返回如下内容:
HTTP/1.1 301 Moved Permanently
Date: Thu, 16 Feb 2006 12:14:13 GMT
Server: IBM_HTTP_Server
Location: http://www.ibm.com/link/redirect.www.ibm.com/www.ibm.com.cn/
Content-Length: 268
Content-Type: text/html
h1>Moved Permanently
The document has moved
here.
根据HTTP协议里的规定,3开头的错误码表示重定向,并告诉浏览器从指定的URL重新获取文件。
2. 于是,浏览器又做了类似下面的事情。
telnet www.ibm.com 80
GET /link/redirect.www.ibm.com/www.ibm.com.cn/
Host: www.ibm.com.cn
Accept-Languge: zh_CN
这时WEB服务器上返回如下内容:
Found
The document has moved
here.
还是重定向。
3. 于是,浏览器又做了类似下面的事情。
telnet www.ibm.com 80
GET /cn/ HTTP/1.1
Host: www.ibm.com.cn
Accept-Languge: zh_CN
这回终于得到了网面真正的内容。
参考: RFC 2616 中的错误码:
Status-Code = "100" ;Section 10.1.1: Continue | "101" ;Section 10.1.2: Switching Protocols | "200" ;Section 10.2.1: OK | "201" ;Section 10.2.2: Created | "202" ;Section 10.2.3: Accepted | "203" ;Section 10.2.4: Non-Authoritative Information | "204" ;Section 10.2.5: No Content | "205" ;Section 10.2.6: Reset Content | "206" ;Section 10.2.7: Partial Content | "300" ;Section 10.3.1: Multiple Choices | "301" ;Section 10.3.2: Moved Permanently | "302" ;Section 10.3.3: Found | "303" ;Section 10.3.4: See Other | "304" ;Section 10.3.5: Not Modified | "305" ;Section 10.3.6: Use Proxy | "307" ;Section 10.3.8: Temporary Redirect | "400" ;Section 10.4.1: Bad Request | "401" ;Section 10.4.2: Unauthorized | "402" ;Section 10.4.3: Payment Required | "403" ;Section 10.4.4: Forbidden | "404" ;Section 10.4.5: Not Found | "405" ;Section 10.4.6: Method Not Allowed | "406" ;Section 10.4.7: Not Acceptable | "407" ;Section 10.4.8: Proxy Authentication Required | "408" ;Section 10.4.9: Request Time-out | "409" ;Section 10.4.10: Conflict | "410" ;Section 10.4.11: Gone | "411" ;Section 10.4.12: Length Required | "412" ;Section 10.4.13: Precondition Failed | "413" ;Section 10.4.14: Request Entity Too Large | "414" ;Section 10.4.15: Request-URI Too Large | "415" ;Section 10.4.16: Unsupported Media Type | "416" ;Section 10.4.17: Requested range not satisfiable | "417" ;Section 10.4.18: Expectation Failed | "500" ;Section 10.5.1: Internal Server Error | "501" ;Section 10.5.2: Not Implemented | "502" ;Section 10.5.3: Bad Gateway | "503" ;Section 10.5.4: Service Unavailable | "504" ;Section 10.5.5: Gateway Time-out | "505" ;Section 10.5.6: HTTP Version not supported | extension-code
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=600658
本文转自
http://blog.csdn.net/absurd/archive/2006/02/16/600658.aspx