【问题标题】:How do I force SSL and also have a www domain URL redirect?我如何强制 SSL 并有一个 www 域 URL 重定向?
【发布时间】:2018-06-12 06:14:44
【问题描述】:

我有一个域在 example.com 上运行,https://example.com 在 Heroku 上运行。我的名称服务器上有一个从 www 到 https://example.com 的 URL 重定向。我在config/environment/production.rb 中设置了config.force_ssl = true。域 URL 重定向仅适用于 http,不适用于 https。我第一次输入 www.example.com 时,它可以在 Chrome 中运行。但是,我第二次使用 www.example.com 时它失败了。它给出了一个带有 307 内部重定向的“ERR_CONNECTION_REFUSED”。

Status Code: 307 Internal Redirect
Location: https://www.example.com/
Non-Authoritative-Reason: HSTS

尽管域服务总是通过curl 提供Location: https://example.com。 Chrome 是从哪里获得https://www* 的?我在 chrome://net-internals/#hsts 看到了 https://superuser.com/a/881431/130929 关于从 Chrome 中删除 HSTS 条目的信息。如果我对 example.com 和 www.example.com 都这样做,那么它只会在第一次再次对 www.example.com 起作用。 example.com 和 https://example.com 始终有效。更糟糕的是,在 Firefox 中,加载页面后,简单地使用 example.com 会失败,因为 Firefox 会自动添加一个https://www。如何在根域上使用 HTTPS 并将 www 重定向到根域?我不在乎处理https://www.example.com,因为没有人会输入它。他们只会错误地输入 www.example.com。

【问题讨论】:

  • 你有 SSL 证书吗?
  • 是的,看我说I have a domain running on ... https://example.com的部分。它在第一句话中。另请参阅我在底部附近说https://example.com always works 的部分。

标签: ruby-on-rails google-chrome heroku https hsts


【解决方案1】:

好的,我用这个答案修复了它http://stackoverflow.com/questions/10629397/ddg#10632901

我在curl -i https://example.com看到它正在返回

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

最大年龄为 6 个月。 includeSubDomains 可能意味着包含www。所以我加了

class ApplicationController < ActionController::Base
  before_action :disable_hsts_subdomains

  def disable_hsts_subdomains
    response.headers["Strict-Transport-Security"] = 'max-age=15552000;'
  end

刚刚删除了includeSubDomains,因此它不会尝试重定向www,而无需先联系主机(DNS 服务器),这会将重定向发送到正确的根域。

【讨论】:

  • 它在 Firefox 60.0.2 中仍然不起作用。我提交了一个错误:bugzilla.mozilla.org/show_bug.cgi?id=1468353。 Firefox 将仍然https:// 添加到域www.example.com,即使它不再具有includeSubdomains 并且即使我从SiteSecurityServiceState.txt(Firefox 版本的chrome://net-internals/#hsts)中删除了该域。
猜你喜欢
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
相关资源
最近更新 更多