zoukankan      html  css  js  c++  java
  • Python接口自动化(十)重定向(Location)

      在实际工作中,有些接口请求完以后会重定向到别的url,而你却需要重定向前的url。

    1、请求转发

      该动作是服务器行为,在web容器中进行的,客户端对于跳转是不知道的,地址栏中显示的URL是不会变化的,因为请求转发中是一次请求,相同的request,可以在请求中设置属性对象(setAttribute())来实现数据共享

    request.getRequestDispatcher(URL).forward(request,response);

    2、请求重定向(sendRedirect,也称为间接的请求转发)

    该动作是客户端行为,服务器会向客户端返回一个301状态码并携带一个Location属性表名应请求的地址,然后客户端按照服务器返回的地址重新发送请求,地址栏中显示的URL是会变化的因为请求重定向中是两次不同的请求request,无法实

    现数据共享

    response.sendRedirect(URL);

     重定向

      常见的重定向分为301重定向和302重定向。重定向是一种比较特别的优化方式,因为需要通过代码来实现,从而变相提高权重值。所以在特殊情况下,如果使用重定向过于严重,则会被搜索引擎判定为不是正当的优化。

    1、301重定向代表永久性转移(Permanently Moved)

    301重定向被称之为永久性重定向,主要是针对一些永久性更改的网站,而且这种重定向一旦做好,将会对网站的优化大有好处。

    2、302重定向代表暂时性转移(Temporarily Moved )

    302重定向的使用并不多见,它通常被称之为暂时性的转移。302重定向的使用常见于meta重定向和JavaScript重定向。而这种重定向是典型的不正当行为,很容易被搜索引擎发现,并将其重定向的网址定义为不合法网站,做出惩罚。 

    3、以博客园举个简单的场景案例,先登录博客园打开我的博客首页,进入任意一个页面都可以,在这里进我的随笔编辑界面,记住这个地址:https://i.cnblogs.com/EditPosts.aspx?opt=1

    4.退出博客园登录,把刚才我的随笔这个地址https://i.cnblogs.com/EditPosts.aspx?opt=1输入浏览器回车,抓包会看到这个请求状态码是 302。

    启用或禁止重定向(allow_redirects)

    默认情况下,allow_redirects=True是启用重定向的。

     获取重定向后地址

    1.在无权限请求后,服务器会下发一个新的请求链接,在response的headers里,如fiddler抓包的Location

     2.代码试下获取Location地址

     ---------------------------------------------------------------------------------------------------------------------------

    咱们查看源码,requests.get,get的源码;pycharm中通过ctrl+鼠标左键可以定位到方法的位置。

     kwargs是字典类型,setdefault的作用是给字典键名allow_redirects赋值。

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    【css系列】创建网页加载进度条
    【大数据系列】apache hive 官方文档翻译
    【大数据系列】问题汇总
    【大数据系列】hive修改默认的derby数据库
    【大数据系列】hive安装及启动
    【大数据系列】MapReduce详解
    【大数据系列】基于MapReduce的数据处理 SequenceFile序列化文件
    【大数据系列】windows下连接Linux环境开发
    【大数据系列】常用命令
    【大数据系列】hadoop脚本分析
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13388118.html
Copyright © 2011-2022 走看看