美文网首页
HTTP 的重定向

HTTP 的重定向

作者: Solomon_Xie | 来源:发表于2019-01-19 01:52 被阅读0次

一直好奇,当我们request一个URL时候,它是怎么在后台就转向了。
浏览器是接收到什么指令了才会被重定向?在Headers中?在文档中被JS脚本重定向?还是什么?

参考Mozilla超好看文档:HTTP 的重定向

也就是说,命令客户端的浏览器对一个URL重定向的方法有:

  • (*) 通过Status Code+Headers: Location来命令浏览器重定向至Location的网址
  • HTML的头部的<meta>标签中设置重定向。但是只适用于HTML,类似图片等其它资源就不行了
  • Javascript脚本中写window.location="..."重定向。同样只适用于能加载JS的客户端,不适合其它资源。

通过Status Code状态码重定向

这种方法是最标准、适应度最广泛的:也就是无需HMTL,无需浏览器,无需BODY,只要Headers即可要求接收者重定向。

原理图:

imageimage

要求重定向的状态码有:

  • 永久重定向
    • 301
    • 308
  • 临时重定向
    • 302
    • 303
    • 307
  • 特殊重定向
    • 300
    • 304

Python获取每次重定向的地址

一般来说,我们用requests的方法,

r = requests.get(uri, allow_redirects=True)
print( r.url )

for jump in r.history:
    print( jump.url )

但是最近在使用一些WebAPI时候,如Oauth2.0的时候,只有登录后才会重定向。
所以如果程序中没有做到登录,后台就不会重定向。也就是说,request的时候我们要加入cookies登录信息,而且是对应着最开始response中的set cookies设置的cookies才能被重定向。


相关文章

  • nginx重定向

    nginx重定向 http重定向到https

  • 应用服务器集群的伸缩性设计

    1、HTTP重定向负载均衡 利用HTTP重定向协议实现负载均衡。如下图所示: HTTP重定向服务器是一台普通的应用...

  • Nginx下HTTP强制重定向至HTTPS

    Nginx下HTTP强制重定向至HTTPS 对于nginx来说,配置http强制重定向至https有多种多样的写法...

  • HTTP重定向

    301,302,303,307 301是永久重定向,常用的场景是使用域名跳转。 比如,我们访问 http://ww...

  • HTTP重定向

    301,302,303,307 301是永久重定向,常用的场景是使用域名跳转。 比如,我们访问http://www...

  • HTTP 的重定向

    一直好奇,当我们request一个URL时候,它是怎么在后台就转向了。浏览器是接收到什么指令了才会被重定向?在He...

  • http和https

    http和https的区别 响应: 302:临时重定向,浏览器不需要缓存 301:永久重定向 303:临时重定向,...

  • 重定向

    HTTP重定向 DNS重定向 任播寻址 IP MAC转发 IP地址转发 js中实现重定向的几种方式 window....

  • 重定向与负载均衡

    前言 重定向技术,它们是如何工作的以及它们的负载均衡能力如何: HTTP 重定向 DNS 重定向 任播路由 IP ...

  • JMeter - HTTP请求中的自动重定向和跟随重定向的区别

    JMeter 的Sampler中HTTP请求,可以选择 自动重定向和跟随重定向。这两者有何区别呢? 自动重定向:状...

网友评论

      本文标题:HTTP 的重定向

      本文链接:https://www.haomeiwen.com/subject/jstirqtx.html