Joh*_*ner 4 browser apache ssl https hsts
我有一个网站 (userbob.com),通常将所有页面作为 https 提供服务。但是,我试图让一个子目录 (userbob.com/tools/) 始终以 http 形式提供内容。目前,似乎 Chrome 的 HSTS 功能(我不明白它是如何工作的)强制我网站的页面通过 https 加载。我可以转到 chrome://net-internals/#hsts 并从 Chrome 的 HSTS 集中删除我的域,下一个查询将按我的意愿工作,而无需重定向到 https 版本。但是,如果我再次尝试加载页面,它最终会再次重定向。我让它工作的唯一方法是,如果我去 chrome://net-internals/#hsts 并在每次请求后从 Chrome 的 HSTS 集中删除我的域。如何让浏览器知道我希望 userbob.com/tools/ 中的所有页面都加载为 http?我的站点使用 apache/tomcat Web 服务器。
(仅供参考,我希望工具目录中的页面通过 http 而不是 https 提供页面的原因是因为其中一些旨在 iframe http 页面。如果我尝试从 https 页面 iframe 一个 http 页面,我最终会得到混合内容错误。)
HTTP 严格传输安全(或 HSTS)是您的站点可以发送到浏览器的设置,上面写着“我只想在我的站点上使用 HTTPS - 如果有人试图访问 HTTP 链接,请在发送请求之前将其自动升级到 HTTPS ”。它基本上不允许您意外或有意地发送任何 HTTP 流量。
这是一项安全功能。HTTP 流量可以被拦截、读取、更改和重定向到其他域。仅限 HTTPS 的网站应将 HTTP 流量重定向到 HTTPS,但如果最初仍通过 HTTP 发送任何请求,则存在各种安全问题/攻击,因此 HSTS 会阻止这种情况。
HSTS 的工作方式是您的网站在您的 HTTPS 请求中发送Strict-Transport-Security一个值为 的HTTP 标头max-age=31536000; includeSubDomains。在本例中,浏览器会缓存它并激活 HSTS 31536000 秒(1 年)。您可以在浏览器 Web 开发人员工具中或使用https://securityheaders.io 等网站查看此 HTTP 标头。通过使用该chrome://net-internals/#hsts站点,您可以清除该缓存并再次允许 HTTP 流量。但是,一旦您通过 HTTPS 访问该站点,它就会再次发送 Header,并且浏览器将恢复为仅 HTTPS。
因此,要永久删除此设置,您需要停止发送该Strict-Transport-Security标题。在您的 Apache/Tomcat 服务器中找到它并将其关闭。或者最好max-age=0; includeSubDomains先将其更改为一段时间(这会告诉浏览器在 0 秒后清除缓存,因此无需访问即可将其关闭chrome://net-internals/#hsts,只要您通过 HTTPS 访问该站点以获取此 Header,然后删除Header 完全稍后。
关闭 HSTS 后,您可以恢复使用 HTTPS 页面和 HTTP 标准重定向页面。
但是,如果我不警告您不要返回 HTTP,那将是我的失职。HTTPS 是新标准,并且普遍鼓励所有站点迁移到 HTTPS 并惩罚那些不迁移的站点。阅读他的帖子以获取更多信息:
https://www.troyhunt.com/life-is-about-to-get-harder-for-websites-without-https/
虽然您无法在 HTTPS 页面上构建 HTTP 内容是正确的,但您应该考虑是否有其他方法可以解决此问题。您网站上的单个 HTTP 页面可能会导致安全问题,例如泄露 cookie(如果它们设置不正确)。Plus 框架太可怕了,不应再使用 :-)
| 归档时间: |
|
| 查看次数: |
11148 次 |
| 最近记录: |