HTTP协议学习(重定向)

什么是重定向

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

状态码

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

测试

import urllib2
class 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 headers
weibo = "http://www.weibo.com"      
opener = urllib2.build_opener(RedirectHandler)
response = opener.open(weibo)
print response.geturl()
urllib2.install_opener(opener)

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

Server: WeiBo
Date: Mon, 25 May 2015 08:09:21 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Mon, 25 May 2015 08:09:21 GMT
Pramga: no-cache
Cache-Control: no-cache, no-store
Location: 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.4673
DPOOL_HEADER: dagda26
Set-Cookie: YF-Ugrow-G0=57484c7c1ded49566c905773d5d00f82;Path=/
LB_HEADER: venus50

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值