当你的才华不能撑起你的野心时,就是你该选择学习的时候了!

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' '*';

posted @ 2025-04-21 16:02  hofmann  阅读(166)  评论(0)    收藏  举报