当我的网站通过特定 IP 地址访问时,如何取消设置单个/多个 HTTP 标头?因为我的 CSP 配置阻止某些本地页面正确加载。例如,如果我有 phpMyAdmin,但由于设置了 CSP,我无法在本地使用它。
答案1
您可以使用此配置根据 IP 地址取消设置标头:
# For single ip address. Change the IP address to your needs
<Directory "/path/to/the/folder/which/needs/to/have/this/feature">
<If "%{REMOTE_ADDR} == '127.0.0.1'">
Header always unset HeaderName
</If>
</Directory>
# For multiple IP addresses, remove the top one, and use this one, and change the IP addresses
# to your needs, and add more '||' to use more IP addresses.
<Directory "/path/to/the/folder/which/needs/to/have/this/feature">
<If "%{REMOTE_ADDR} == '127.0.0.1' || %{REMOTE_ADDR} == '1.2.3.4'">
Header always unset HeaderName
</If>
</Directory>
确保 mod_headers 已启用。有关更多详细信息,请查看https://httpd.apache.org/docs/2.4/mod/core.html#if和https://httpd.apache.org/docs/2.4/expr.html。
您可以根据自己的需要进行配置,但要小心,确保您没有为除您自己之外的所有人禁用 CSP 等标头。
答案2
当该Header
指令不起作用时,请改用该指令。下面是一个示例,说明当 Apache 用作反向代理时RequestHeader
如何防止标头欺骗,这将不起作用:X-Forwarded-For
Header
RequestHeader unset X-Forwarded-For
RemoteIPHeader X-Forwarded-For