是否可以根据 htaccess 中的 UAGENT 设置 header
Is it possible to set a header based on the UAGENT in htaccess
因为 Microsoft Internet Explorer 和 Microsoft Edge 不支持内容安全策略版本 2,或者对于 IE,根本不支持它我想更改基于用户代理的内容安全策略。这对于 PHP 来说相当简单,但我想用 .htaccess 文件来做到这一点。问题是;这可能吗以及如何。到目前为止,我发现了很多重写规则,但没有 mod_headers 这样做。
正在搜索这样的内容:
Header set Content-Security-Policy: ...
<UserAgentMatch "(Edge|Internet Explorer)$">
Header unset Content-Security-Policy
</UserAgentMatch>
有人知道我该怎么做吗?如果可能的话?
更新:
Walf 的回答给出了内部服务器错误,但经过一些微调后得到了解决方案。对于寻找相同内容的人,请参阅下面的代码。
<If "%{HTTP_USER_AGENT} !~ /(MSIE|Edge)s*/i">
header always set Content-Security-Policy "..."
</If>
仅当不是那些浏览器时才尝试设置header?
<If "%{HTTP_USER_AGENT} !~ /\s+(?:MSIE\s+\d|Edge\/)/">
Content-Security-Policy: ...
</If>
因为 Microsoft Internet Explorer 和 Microsoft Edge 不支持内容安全策略版本 2,或者对于 IE,根本不支持它我想更改基于用户代理的内容安全策略。这对于 PHP 来说相当简单,但我想用 .htaccess 文件来做到这一点。问题是;这可能吗以及如何。到目前为止,我发现了很多重写规则,但没有 mod_headers 这样做。
正在搜索这样的内容:
Header set Content-Security-Policy: ...
<UserAgentMatch "(Edge|Internet Explorer)$">
Header unset Content-Security-Policy
</UserAgentMatch>
有人知道我该怎么做吗?如果可能的话?
更新:
Walf 的回答给出了内部服务器错误,但经过一些微调后得到了解决方案。对于寻找相同内容的人,请参阅下面的代码。
<If "%{HTTP_USER_AGENT} !~ /(MSIE|Edge)s*/i">
header always set Content-Security-Policy "..."
</If>
仅当不是那些浏览器时才尝试设置header?
<If "%{HTTP_USER_AGENT} !~ /\s+(?:MSIE\s+\d|Edge\/)/">
Content-Security-Policy: ...
</If>