关于网络请求302,重定向的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于网络请求302,重定向的问题相关的知识,希望对你有一定的参考价值。
参考技术A 我最近在请求一个http地址的时候,那个地址转到了一个https上去,导致我取的数据一直是302,我研究了一下,做个记录。
以前用retrofit2.0+okHttp3.0也有这种但是重定向的也没有特别的发现就成功了,但是这次这个地址不知道后端做了什么,取到的是302。因为以前没有注意过,这里记录一下。
这里有两种方式:
第一种:
后面的方式不变,这样就可以了。这种方式肯定是简单,但是我实验了很久用的是第二种。原因是client.followRedirects();这句话我不是单独写的,我将其放在build里面,却没有效果。
放在这里面是没有效果的。( 现在没有空,等我以后有空了再研究一下,为什么放里面没有效果。 )
第二种:
首先禁止重定向:初始化okhttp,设定followRedirects(false)。
直接利用okhttp来请求,在返回值中利用response.headers().get("Location")直接获取重定向地址,然后再次请求。
关于重定向301与302状态码的问题
1.重定向
(1) 什么是重定向?
服务器通知浏览器立即访问一个新的地址
注:服务器可以通过发送302状态码和location消息头(该消息头的值是一个地址,一般称之为重定向地址),浏览器收到之后,会立即向重定向地址发送请求
(2) 如何重定向
response.sendRedirect(String url);
‘注:url就是重定向地址。
‘重定向之前,容器会先清空response对象上存放的所有数据。也就是说响应数据包消息正文为空。
(3) 特点
a.重定向地址是任意的
b.重定向之后,浏览器地址栏的地址会发生变化。
官方给的说法中301与302是这样定义的:
- 301 redirect:
301
代表永久性转移(Permanently Moved)。 - 302 redirect:
302
代表暂时性转移(Temporarily Moved )。
对于用户:301与
302 对用户来说没有区别,他们看到效果只是跳转,即浏览器中旧的URL变成了新的URL。页面跳到了这个新的URL所指向的地址。
对于服务端:我们建议使用301状态码,特别是搜索引擎类的。因为如果使用了302,就可能发生网址篡改;当网页HTML301使用301状态码重定向到网页HTML302时,搜索引擎可以确认网页HTML301永久的重定向到location中的位置,或者说原地址实际上已经不存在了,搜索引擎就会把将HTML302当作唯一有效目标。这样搜索引擎会把HTML301后的页面作为目标location。
以上是关于关于网络请求302,重定向的问题的主要内容,如果未能解决你的问题,请参考以下文章