apache - 为什么 Firefox 和 Chrome 坚持对手动输入的非 SSL 网站使用 HTTPS

标签 apache google-chrome firefox redirect ssl

如果能帮助我理解发生了什么,我将不胜感激:Firefox 和 Chrome 都无法加载我的非 SSL 网站,例如 subdomain.example.com,并出现以下 SSL 错误(均在 ubuntu 14.04 i386 上):

  • FF30:ssl_error_rx_record_too_long
  • Chrome 35:ERR_SSL_PROTOCOL_ERROR

这在我设置(并遵循)重定向 (302) 到父域上的 SSL 后开始发生,比如 http://example.comhttps://example.com .在浏览器上完全清除缓存后,它会恢复正常。但是,一旦我访问父域,我就会在子域上遇到问题。

我从未输入过带有“https://”方案前缀的子域 URL。我通常不输入任何前缀,即使我明确使用“http://”作为前缀也会发生这种情况。不仅在地址栏上,链接也是如此。

我非常有信心子域上的非 SSL 站点没有问题。

我考虑过填写错误报告,但这不太可能是两种浏览器中的错误,更有可能是我遗漏了什么。

是否存在任何规则,如果给定域上的网站支持 SSL(或将 http 重定向到 https),则假设子域上的网站也支持 SSL?

后来我找到了 SSL 错误的原因。但问题依然存在(现在提示连接被拒绝):

Apache 网络服务器配置为监听端口 80 和 443,但没有“SSLEngine on”子句。这有效地使其在端口 443 上提供纯 HTTP。

值得一提的是,这个 Apache 配置错误并不难犯。实际上,在默认的 Ubuntu 配置中(对于 Debian 可能是相同的),这只是启用/加载 SSL 模块的问题(而不是提供使用 SSL 的站点配置)。

最佳答案

我刚刚找到了原因。父域上的 ssl 站点包含以下 STS 响应 header :

Strict-Transport-Security: max-age=31536000 ; includeSubDomains

这会根据规范触发浏览器行为。

关于apache - 为什么 Firefox 和 Chrome 坚持对手动输入的非 SSL 网站使用 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24565337/

相关文章:

javascript - 跨选项卡复制数据

python - django-debug-toolbar 出现,但为空(面板未填充)

apache - .htaccess 301 重定向仅适用于谷歌机器人

apache - 如何在 Linux 服务器中使 URL 不区分大小写

javascript - Chrome 中的 GM_xmlhttpRequest?

javascript - 在 FireFox 中监听历史事件?

Apache 将 Websocket 转发到 Golang

html - 试图让一个大的居中背景图像在移动浏览器中工作而不会被扭曲

jquery - 单击图像不会在 chrome 中加载

node.js - Node js selenium-webdriver 将页面另存为