为什么浏览器缓存301重定向到http://example.com并将其用于http://example.com:8080?

时间:2017-01-19 13:57:27

标签: browser-cache http-status-code-301 http-redirect

我的 CentOS 服务器上有两个不同的网络服务器上的两个网站( NGINX& nodejs )。
在我的 NGINX 配置中,我已将 http://example.com 重定向到 https://example.com < / em> 永久 另一方面,网址 http://example.com:8080 nodejs 处理,不会重定向到任何地方。

情景

当我在浏览器中请求 http://example.com Chrome,Firefox或Safari )时,会将其重定向到 < em> https://example.com ,这没关系。当我输入 http://example.com:8080 时,它也会重定向到 https://example.com:8080 ,而这不是正确。

当我清除浏览器缓存时,网址 http://example.com:8080 正常工作,但在委托 http://example.com 之后,网址 http://example.com:8080 再次重定向到 HTTPS 。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您可能会遇到HTTP Strict Transport Security (HSTS)规范定义的内容。

您需要检查https://example.com请求的响应。它可能包含Strict-Transport-Security标头,指示浏览器重写example.com 请求的所有URI以使用安全方案。来自HTTP严格传输安全(HSTS)规范8.3. URI Loading and Port Mapping section的相关摘录:

  

UA必须用“https”[RFC2818]替换URI方案,并且      如果URI包含显式端口组件“80”,那么      UA必须将端口组件转换为“443”或

     

如果URI包含不是的显式端口组件             等于“80”,必须保留端口组件值;             否则,

     

如果URI不包含显式端口组件,则为UA             绝不能添加一个。

     

注意:这些步骤可确保HSTS策略适用于HTTP                    在HSTS主机的任何TCP端口上。

     

注意:在提供显式端口的情况下(和a             在较小范围内使用子域名,很可能是这样的             实际上有一个运行的HTTP(即非安全)服务器             指定的端口,因此HTTPS请求将失败             (见附录A第6项(“设计决定说明”))。

有关详细信息,请查看Strict-Transport-Security MDN page