我正在尝试在我的应用中为每个响应添加HSTS标头.
我的第一个想法是使用mod_headers - 我将此指令放在documentroot的.htaccess文件中:
Header set Strict-Transport-Security "max-age=7776000"
Run Code Online (Sandbox Code Playgroud)
这在使用Apache 2.2和mod_php的本地设置上工作正常.所有资源都使用适当的HSTS标头进行响应.
我的部署环境使用Apache 2.2和mod_fastcgi,上述技术适用于除 php文件之外的任何资源.
另一个SO 问题有一个类似的问题,传入的请求(?)有剥离标题 - 但我担心修改响应的标题离开服务器.
如何在.htaccess文件的上下文中向PHP资源添加响应头?
这个.htaccess文件:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 4 month"
</IfModule>
<IfModule mod_headers.c>
Header merge X-ModHeaders "Yes, it is installed"
</IfModule>
Run Code Online (Sandbox Code Playgroud)
...在我的开发框(Windows框,Apache/2.4.10,PHP作为Apache模块运行)中按预期工作,其中“有效”意味着它为所有资源(静态或动态)生成适当的标头。
但是,在我的生产服务器(Linux 机器,Apache/2.2.31,PHP 作为 FastCGI 与 mod_fcgid/2.3.9 运行)中,它仅适用于静态资产,不适用于 PHP 脚本。
我怀疑差异来自 PHP SAPI 是否正确?有没有办法修复它,这样我就不需要复制生成 HTTP 标头的代码?