如果某个 IP 访问 Apache,我该如何删除 HTTP 标头?

如果某个 IP 访问 Apache,我该如何删除 HTTP 标头?

当我的网站通过特定 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#ifhttps://httpd.apache.org/docs/2.4/expr.html

您可以根据自己的需要进行配置,但要小心,确保您没有为除您自己之外的所有人禁用 CSP 等标头。

答案2

当该Header指令不起作用时,请改用该指令。下面是一个示例,说明当 Apache 用作反向代理时RequestHeader如何防止标头欺骗,这将不起作用:X-Forwarded-ForHeader

RequestHeader unset X-Forwarded-For
RemoteIPHeader X-Forwarded-For

相关内容