我的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.
我试图使用环境变量设置标题,但我被困在那里.有谁知道怎么做?
我想使用https://和非www.URL始终.所以我在htaccess文件中使用了以下代码.但我收到https://hstspreload.org的警告
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]
<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://mysiteurl.com上的HTTP页面发送HSTS标头.这对HTTP没有影响,应该删除.
请帮我摆脱上述警告.我尝试使用以下代码,但它不起作用#ref.话题
Header always set Strict-Transport-Security "max-age=31536000;
includeSubDomains; preload" env=HTTPS
Run Code Online (Sandbox Code Playgroud)