Admin.Net部署:IIS CORS (跨域资源共享) 配置问题
问题:
Admin.Net 框架中,vue前端 调用发布后的API,报错:Access to XMLHttpRequest at 'http://api.xxx.xxx/api/sysConfig/sysInfo' from origin 'http://localhost:8888' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains multiple values 'http://localhost:8888, *', but only one is allowed.
错误原因分析
您遇到的错误是由于 CORS (跨域资源共享) 配置问题导致的。具体错误信息表明:
您的 Vue 前端运行在 http://localhost:8888
尝试访问 http://api.xxx.xxx/api/sysConfig/sysInfo
服务器响应中 Access-Control-Allow-Origin 头包含了多个值 (http://localhost:8888, *),而根据 CORS 规范,这个头只能包含一个值
这种问题通常发生在:
服务器端多次添加了 CORS 头(可能在多个地方配置了 CORS)
可能是应用程序代码和服务器/代理层都添加了 CORS 头
解决办法:
检查代理服务器或负载均衡器配置
如果您使用了 Nginx、IIS 或其它代理服务器,检查是否在这些层面也配置了 CORS 头。确保只在应用层或代理层一处配置 CORS。
IIS解决办法:
打开IIS管理器,选择您的网站,双击"HTTP响应头"功能,查看已设置的响应头中是否有"Access-Control-Allow-Origin",如果有删除掉
Nginx解决办法:
在 Nginx 配置中如果有类似以下内容,需要移除或调整:
add_header 'Access-Control-Allow-Origin' '*';