Action Dispatch SSL
当 config.force_ssl = true
时,此中间件将被添加到堆栈中,并传递在 config.ssl_options
中设置的选项。它执行三个任务来强制执行安全的 HTTP 请求
-
TLS 重定向:将
http://
请求永久重定向到https://
,URL 主机、路径等保持不变。默认情况下启用。设置config.ssl_options
以修改目标 URL(例如redirect: { host: "secure.widgets.com", port: 8080 }
),或设置redirect: false
以禁用此功能。请求可以使用
exclude
选择退出重定向config.ssl_options = { redirect: { exclude: -> request { /healthcheck/.match?(request.path) } } }
Cookies
将不会被标记为对排除的请求安全。 -
安全 Cookie:在 Cookie 上设置
secure
标志,告诉浏览器它们不得与http://
请求一起发送。默认情况下启用。使用secure_cookies: false
设置config.ssl_options
以禁用此功能。 -
HTTP 严格传输安全 (HSTS):告诉浏览器将此站点记住为仅 TLS,并自动重定向非 TLS 请求。默认情况下启用。使用
hsts: false
配置config.ssl_options
以禁用。使用
hsts: { ... }
设置config.ssl_options
以配置 HSTS-
expires
:这些设置将持续多长时间(以秒为单位)。要符合浏览器预加载列表的要求,最短时间为 1 年。默认值为 2 年(推荐)。 -
subdomains
: 设置为true
以告知浏览器将这些设置应用于所有子域。这可以保护您的 Cookie 免受子域上易受攻击的网站拦截。默认值为true
。 -
preload
: 宣告此网站可能包含在浏览器的预加载 HSTS 列表中。HSTS 在每次访问时都保护您的网站,除了第一次访问,因为它尚未看到您的 HSTS 标头。为了弥补这一差距,浏览器供应商会包含一个内置的 HSTS 启用网站列表。访问 hstspreload.org 提交您的网站以供包含。默认值为false
。
要关闭 HSTS,仅仅省略标头是不够的。浏览器会记住原始的 HSTS 指令,直到它过期。相反,请使用标头告诉浏览器立即使 HSTS 过期。设置
hsts: false
是hsts: { expires: 0 }
的快捷方式。 -