Как заставить SSL, а также перенаправить URL-адрес домена www? - PullRequest
0 голосов
/ 12 июня 2018

У меня есть домен, работающий на example.com и https://example.com на Heroku.У меня есть перенаправление URL на моем сервере имен с www на https://example.com.У меня config.force_ssl = true установлено в config/environment/production.rb.Перенаправление URL домена работает только по http, а не по https.Он работает в Chrome, когда я в первый раз набираю www.example.com.Однако, это терпит неудачу во второй раз, когда я использую www.example.com.Выдает «ERR_CONNECTION_REFUSED» с внутренним перенаправлением 307.

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

Это несмотря на то, что служба домена всегда выдает Location: https://example.com через curl.Откуда Chrome получает https://www*?Я видел https://superuser.com/a/881431/130929 об удалении записей HSTS из Chrome на chrome://net-internals/#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.

1 Ответ

0 голосов
/ 12 июня 2018

ОК. Я исправил это с помощью этого ответа 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-серверу), что отправило бы перенаправление в правильный кореньдомен.

...