我在NgINX Server上有这个配置,我需要在运行Apache的另一个Web服务器上使用相同的规则。
NGINX
if ($http_referer !~ "^https?:\/\/.*\.sitea\.com.*|https?:\/\/.*?\.siteb\.com.*|https?:\/\/sub\.sitea\.com.*|?$") {
add_header X-Frame-Options "DENY";
}
我尝试使用以下代码,但收到内部服务器错误
的Apache
<IfModule mod_headers.c>
<If "%{HTTP_REFERER} !~ m#^https?:\/\/.*\.sitea\.com.*$#">
Header append X-Frame-Options "DENY"
</If>
</IfModule>
你能帮助找到正确的方法吗?
答案 0 :(得分:1)
我发现这个解决方案适用于旧的Apache版本。
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?:\/\/.*\.sitea\.com.*?$ [NC]
RewriteRule ^ - [E=NOFRAME:1]
Header append X-Frame-Options "DENY" env=NOFRAME
通过这种方式,我可以根据授权域列表有条件地放置X-Frame-Options
。
这是不使用内容安全策略规则的旧浏览器的故障回复。
You can see here the full list
Header append Content-Security-Policy "frame-ancestors sitea.com"
所以现代浏览器将使用CSP2规则,旧版使用X-Frame-Options。感谢正则表达式,我们可以将此选项应用于允许的域列表。
答案 1 :(得分:0)
Expressions。你的肯定比那个年长。