我的Web应用程序在我控制的不同数量的主机上运行.为了防止需要更改每个vhost的Apache配置,我在我的repo中使用.htaccess文件添加了大部分配置,因此每个主机的基本设置只是几行.这也可以在部署新版本时更改配置.目前.htaccess(un)设置头文件,做一些重写魔术并控制UA的缓存.
我想使用.htaccess在应用程序中启用HSTS.只需设置标题很简单:
Header always set Strict-Transport-Security "max-age=31536000"
Run Code Online (Sandbox Code Playgroud)
但规范明确指出:"HSTS主机不得在通过非安全传输传输的HTTP响应中包含STS头字段." 因此,我不希望在通过HTTP连接发送标头时发送标头.见http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14.
我试图使用环境变量设置标题,但我被困在那里.有谁知道怎么做?
我已在我的网站的 .htaccess 中插入以下内容,以便进入HSTS 预加载列表:
<ifModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</ifModule>
Run Code Online (Sandbox Code Playgroud)
问题是当我提交我的网站时,我获得:
警告:HTTP 上不必要的 HSTS 标头。http://fabriziorocca.it 上的 HTTP 页面发送一个 HSTS 标头。这对 HTTP 没有影响,应该删除。
目前我在 .htaccess 中使用以下内容以便从 http 切换到 https:
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
我该如何解决问题?
先感谢您。