HTTP协议学习(重定向)

来源:互联网 发布:记录鼠标移动轨迹 js 编辑:程序博客网 时间:2024/04/20 15:02

什么是重定向

HTTP重定向:服务器无法处理浏览器发送过来的请求(request),服务器告诉浏览器跳转到可以处理请求的url上。(浏览器会自动访问该URL地址,以至于用户无法分辨是否重定向了。)
重定向的返回码3XX说明。Location响应首部包含了内容的新地址或是优选地址的URL。

状态码

301:在请求的URL已被移除时使用。响应的Location首部中应该包含资源现在所处的URL。
302:与301状态码类似,但是,客户端应该使用Location首部给出的URL来零食定位资源,将来的请求仍然使用老的URL。

测试

import urllib2class RedirectHandler(urllib2.HTTPRedirectHandler):        def http_error_301(self,req,fd,code,msg,headers):            print "301 OK!!"        def http_error_302(self,req,fd,code,msg,headers):            print "302 OK!!"            print headersweibo = "http://www.weibo.com"      opener = urllib2.build_opener(RedirectHandler)response = opener.open(weibo)print response.geturl()urllib2.install_opener(opener)

通过打开微博的地址,发现返回302的状态码,返回的首部为

Server: WeiBoDate: Mon, 25 May 2015 08:09:21 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: closeExpires: Mon, 26 Jul 1997 05:00:00 GMTLast-Modified: Mon, 25 May 2015 08:09:21 GMTPramga: no-cacheCache-Control: no-cache, no-storeLocation: http://passport.weibo.com/visitor/visitor?entry=miniblog&a=enter&url=http%3A%2F%2Fweibo.com%2F&domain=.weibo.com&ua=php-sso_sdk_client-0.6.11&_rand=1432541361.4673DPOOL_HEADER: dagda26Set-Cookie: YF-Ugrow-G0=57484c7c1ded49566c905773d5d00f82;Path=/LB_HEADER: venus50

其中的Location为重定向的地址。将重定向的Location进行访问后返回200。

0 0
原创粉丝点击