Apache配置Header always set后404响应仍无Access-Control-Allow-Origin头
解决Apache 404响应不携带CORS头的问题
1. 确认mod_headers模块已启用
打开XAMPP的httpd.cfg文件,找到以下行,确保前面没有注释符号#:
LoadModule headers_module modules/mod_headers.so
如果被注释,去掉#后保存配置。
2. 调整Header配置覆盖所有响应场景
将CORS头配置放在服务器全局上下文(不要局限在虚拟主机或特定目录块内),补充针对内部重定向场景的规则:
<IfModule mod_headers.c> # 为常规成功/重定向响应设置CORS头 Header always set Access-Control-Allow-Origin "*" # 为内部重定向触发的错误响应(如默认404页面)设置CORS头 Header always set Access-Control-Allow-Origin "*" "env=REDIRECT_STATUS" # 可选:添加常用的CORS方法允许规则 Header always set Access-Control-Allow-Methods "GET, HEAD, OPTIONS" </IfModule>
Apache返回404等错误时,通常会触发内部重定向到默认错误页面,此时REDIRECT_STATUS环境变量会被激活,第二条指令确保这类场景下也能带上CORS头。
3. 自定义错误页面的额外配置(可选)
若你配置了自定义ErrorDocument,需确保错误页面所在目录继承CORS配置。比如自定义404页面路径为/error/404.html,可添加:
<Directory "/path/to/your/error/directory"> <IfModule mod_headers.c> Header always set Access-Control-Allow-Origin "*" </IfModule> </Directory>
4. 重启Apache服务
修改配置后,重启XAMPP中的Apache服务,测试404响应是否已携带Access-Control-Allow-Origin头。
内容的提问来源于stack exchange,提问作者LuWey
相关产品推荐
相关产品推荐

