Windows下Apache Lounge拦截前端认证请求头,如何配置允许及放置指令?
Apache Lounge请求头拦截问题解决方案
1. 如何允许认证令牌请求头(以Authorization为例)
首先必须确保Apache的mod_headers模块已启用:
- 打开Apache Lounge的
httpd.conf配置文件,找到行:
去掉开头的#LoadModule headers_module modules/mod_headers.so#注释,保存后重启Apache服务。
如果是通过Apache反向代理到Django后端(比如搭配uWSGI/Gunicorn),需要在代理配置段添加指令,确保请求头能传递到后端:
- 在你的
<VirtualHost>或<Location>代理配置块中,加入以下指令:
该指令会将前端发送的Authorization头原样转发给Django后端,避免被Apache拦截。RequestHeader set Authorization "%{HTTP:Authorization}" early
如果存在其他安全模块(如mod_security),需检查对应配置,添加规则允许Authorization头通过。
2. RequestHeader unset Authorization指令的放置位置
这个指令的作用是移除请求中的Authorization头,所以绝对不能放在你的Django代理配置或全局配置中(否则会直接拦截掉认证令牌)。正确的放置场景如下:
- 针对不需要认证的特定目录:在对应的
<Directory>块中添加,比如静态资源目录:<Directory "C:/Apache24/htdocs/static"> RequestHeader unset Authorization </Directory> - 针对特定虚拟主机或路径:在对应的
<VirtualHost>或<Location>块中添加,仅作用于该范围的请求。 - 全局场景(极少使用):若所有请求都不需要Authorization头,可放在
httpd.conf的全局段(需在所有模块加载完成后、虚拟主机配置之前)。
内容的提问来源于stack exchange,提问作者InternetWarrior
相关产品推荐
相关产品推荐

