`
ayis
  • 浏览: 187181 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

我的理解:http协议中302和303的区别

 
阅读更多

http1.0协议中只有302码,没有303状态码;
http1.1,在默认情况下,很多服务端基础程序,为了兼容http1.0,在遇到本应响应303时,也给客户端响应了302。


碰到的问题:

场景: 在整个web系统使用https的情况下,在程序中使用了redirect,结果发现redirect之后的重定向请求变成了http,此时redirect的响应码为302.
 
问 题:由于整个应用嵌入的需求,在页面组合上使用了iframe,整个网站包括父页面和iframe的子应用的所有请求均使用的https协议,而在 iframe子应用的redirect请求之后出现了http请求,在ie和firefox等浏览器中,并没有问题,(因为它们把iframe子应用中的 http请求也照样上送到了服务器,接收到http请求时,服务端会强制客户端使用https重定向请求),此时,对我们的系统仍然不存在影响(只是多了 一次重定向请求,但是对用户看不到);

但是在chrome浏览器下,iframe的http请求就被拦截掉了,提示在安全的https环境下不允许使用http访问,造成页面就死在了重定向之前的页面,不能正确的重定向到目标页面去了。
  
       问题看起来很纳闷,但是严格安全限制的浏览器下,问题也很明显。在当时的情况下,也只是看到了现象,至于原因和原理一点都不明白。于是根据现象找解决办 法,我们用的spring mvc,在stackoverflow上面找到了类似的问题。通过设置viewResolver的redirectHttp10Compatible属性 为false,关闭了对http1.0协议的兼容支持,程序的redirect响应码则变为了303,之后的重定向请求则维持了一致的https协议。

     所以,最终发现一个现象,在302和303的状态码下,整个https结构的web系统下,浏览器接收到此两种不同的响应码时,分别使用了http和https去重定向请求。查找网上的理解,
  1. 302=<"HTTP/1.1 302Found(or Moved Temporarily)",
  2. 303=<"HTTP/1.1 303See Other",

也看不出区别。所以,我的理解:302 响应码是http1.0的标准,在当时还没有支持https的相应协议出现,所以现在的浏览器为了兼容http1.0,在302状态码下,碰到了 https的重定向请求,也会以http去转发;而303是http1.1的标准,浏览器就维持了一致的https的重定向请求了。

分享到:
评论

相关推荐

    Http协议内容总结 http协议包含哪些内容 Http协议的请求方法 Http协议实现的原理机制 get与post请求的区别

    - **303 See Other**:与302类似,但希望客户端使用GET方法请求新资源。 - **304 Not Modified**:发送附带条件的请求时,条件不满足时返回,与重定向无关。 - **307 Temporary Redirect**:临时重定向,要求客户端...

    HTTP面试题整理1

    - 3xx:重定向,301永久重定向,302临时重定向,303与302类似,304条件未满足,307临时重定向。 - 4xx:客户端错误,如400请求语法错误,401未授权,403禁止访问,404找不到资源。 - 5xx:服务器错误,如500内部错误...

    HTTP状态码及其含义 下表显示了常见的HTTP 1.1状态代码以及它们对应的状态信息和含义。

    - **303 See Other**:与301/302类似,区别在于原本通过POST请求的资源现在应通过GET方式获取。这是HTTP 1.1新增的状态码。 - **304 Not Modified**:客户端请求的资源自上次请求以来未发生变化,因此返回此状态码来...

    TCPIP协议详解(4-1)

    解析 68 7.9 小结 69 第8章 地址发现协议(BOOTP和DHCP) 71 8.1 “引导”协议(BOOTP) 71 8.2 动态主机配置协议(DHCP) 72 8.2.1 DHCP如何工作 72 8.2.2 理解租用地址 73 8.3 管理地址池 74 ...

    HTTP协议中状态码的含义

    204(无内容)和205(重置内容)都是成功处理请求但不返回内容的情况,区别在于204不返回任何头部信息,而206(部分内容)用于响应部分GET请求,如下载大文件时的断点续传。 3XX(重定向):这类状态码表示为了完成...

    TCP/IP详解

    14.3 内部网关协议和外部网关协议 147 14.3.1 网关-网关协议(GGP) 147 14.3.2 外部网关协议(EGP) 147 14.3.3 内部网关协议(IGP) 148 14.4 小结 148 第五部分 网络服务 第15章 互联网打印协议 149 15.1 IPP历史 149 ...

    就业指导课 -自己的理解 - 副本.doc

    【就业指导课 - 自己的理解】 ...通过理解和掌握这些基础概念和技术,学员能够在面试中表现出扎实的理论基础,从而提高就业竞争力。在实际工作中,结合实践经验,这些知识将成为解决复杂问题的强大工具。

    http响应状态码

    ### HTTP响应状态码详解 HTTP协议作为互联网上应用最为广泛的一种网络协议,它...这些状态码对于理解HTTP协议的行为至关重要,对于开发人员来说,熟悉这些状态码可以帮助他们更有效地调试和优化Web应用程序和服务。

    TCP/IP技术大全(中文PDF非扫描版)

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

    http状态码

    204(无内容)和205(重置内容)都是成功响应,但不返回任何内容,区别在于205要求客户端重置文档视图。206(部分内容)是针对部分GET请求的响应,服务器只返回请求的部分内容。 3xx(重定向):这类状态码表示为了...

    网络开发者必备->http状态码大全

    303(查看其他位置)和307(临时重定向)类似于302,但推荐使用GET方法进行重定向。 4xx(请求错误)状态码意味着请求有误,导致服务器无法处理。400(错误请求)表示服务器无法理解请求的格式,401(未授权)表示...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    6.6.4 sendredirect()和forward()方法的区别 238 6.7 小结 239 第7章 web应用程序的部署 240 7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet...

    TCP-IP技术大全

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

    TCP/IP教程TCP/IP基础

    14.3 内部网关协议和外部网关协议 147 14.3.1 网关-网关协议(GGP) 147 14.3.2 外部网关协议(EGP) 147 14.3.3 内部网关协议(IGP) 148 14.4 小结 148 第五部分 网络服务 第15章 互联网打印协议 149 15.1 IPP历史 149 ...

    TCP/IP技术大全

    14.3 内部网关协议和外部网关协议 147 14.3.1 网关-网关协议(GGP) 147 14.3.2 外部网关协议(EGP) 147 14.3.3 内部网关协议(IGP) 148 14.4 小结 148 第五部分 网络服务 第15章 互联网打印协议 149 15.1 IPP历史 149 ...

    HTTP状态码表示意思

    204(无内容)和205(重置内容)都表示成功处理了请求,但不返回任何内容,区别在于205要求客户端重置文档视图,如清空表单;206(部分内容)用于部分GET请求,服务器只返回请求的部分内容。 3xx(已重定向):这些...

    http状态代码(错误代码)各代表什么意思.docx

    204(无内容)和205(重置内容)都是成功响应,但不返回任何内容,区别在于205要求客户端重置文档视图;206(部分内容)用于响应部分GET请求,如断点续传。 3xx(已重定向):这类状态代码表示需要客户端进行额外...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    6.6.4 sendredirect()和forward()方法的区别 238 6.7 小结 239 第7章 web应用程序的部署 240 7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    6.6.4 sendredirect()和forward()方法的区别 238 6.7 小结 239 第7章 web应用程序的部署 240 7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet...

Global site tag (gtag.js) - Google Analytics