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去重定向请求。查找网上的理解,
- 302=<"HTTP/1.1 302Found(or Moved Temporarily)",
- 303=<"HTTP/1.1 303See Other",
也看不出区别。所以,我的理解:302 响应码是http1.0的标准,在当时还没有支持https的相应协议出现,所以现在的浏览器为了兼容http1.0,在302状态码下,碰到了 https的重定向请求,也会以http去转发;而303是http1.1的标准,浏览器就维持了一致的https的重定向请求了。
相关推荐
- **303 See Other**:与302类似,但希望客户端使用GET方法请求新资源。 - **304 Not Modified**:发送附带条件的请求时,条件不满足时返回,与重定向无关。 - **307 Temporary Redirect**:临时重定向,要求客户端...
- 3xx:重定向,301永久重定向,302临时重定向,303与302类似,304条件未满足,307临时重定向。 - 4xx:客户端错误,如400请求语法错误,401未授权,403禁止访问,404找不到资源。 - 5xx:服务器错误,如500内部错误...
- **303 See Other**:与301/302类似,区别在于原本通过POST请求的资源现在应通过GET方式获取。这是HTTP 1.1新增的状态码。 - **304 Not Modified**:客户端请求的资源自上次请求以来未发生变化,因此返回此状态码来...
解析 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 ...
204(无内容)和205(重置内容)都是成功处理请求但不返回内容的情况,区别在于204不返回任何头部信息,而206(部分内容)用于响应部分GET请求,如下载大文件时的断点续传。 3XX(重定向):这类状态码表示为了完成...
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响应状态码详解 HTTP协议作为互联网上应用最为广泛的一种网络协议,它...这些状态码对于理解HTTP协议的行为至关重要,对于开发人员来说,熟悉这些状态码可以帮助他们更有效地调试和优化Web应用程序和服务。
本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...
204(无内容)和205(重置内容)都是成功响应,但不返回任何内容,区别在于205要求客户端重置文档视图。206(部分内容)是针对部分GET请求的响应,服务器只返回请求的部分内容。 3xx(重定向):这类状态码表示为了...
303(查看其他位置)和307(临时重定向)类似于302,但推荐使用GET方法进行重定向。 4xx(请求错误)状态码意味着请求有误,导致服务器无法处理。400(错误请求)表示服务器无法理解请求的格式,401(未授权)表示...
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通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、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 ...
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 ...
204(无内容)和205(重置内容)都表示成功处理了请求,但不返回任何内容,区别在于205要求客户端重置文档视图,如清空表单;206(部分内容)用于部分GET请求,服务器只返回请求的部分内容。 3xx(已重定向):这些...
204(无内容)和205(重置内容)都是成功响应,但不返回任何内容,区别在于205要求客户端重置文档视图;206(部分内容)用于响应部分GET请求,如断点续传。 3xx(已重定向):这类状态代码表示需要客户端进行额外...
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...
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...