CORS错误未解决:Access-Control-Allow-Origin含多个值'*, *'
解决CORS响应头多值问题
问题描述
从源'http://localhost:3000'访问'https://apicredit2fa.devserver.co.in/api/adminaccount/signin'的XMLHttpRequest已被CORS策略阻止
预检请求的响应未通过访问控制检查:'Access-Control-Allow-Origin'标头包含多个值'*, *',但仅允许一个值。
已配置默认CORS并使用中间件app.UseCors();,尝试固定CORS源后,仍存在*和指定源共存的多值错误。
解决方案
排查重复配置
检查项目中是否存在多种CORS配置方式:- 代码中多次调用
app.UseCors() - appsettings.json等配置文件中存在CORS相关配置
- 部署服务器(如IIS)层面添加了
Access-Control-Allow-Origin自定义响应头
重复配置会导致响应头被多次添加,出现多值冲突。
- 代码中多次调用
统一代码层面的CORS配置
在Program.cs(或Startup.cs)中集中配置唯一的CORS策略,确保只调用一次app.UseCors():// 定义CORS策略 builder.Services.AddCors(options => { options.AddPolicy("AllowLocalOrigin", policy => { policy.WithOrigins("http://localhost:3000") .AllowAnyHeader() .AllowAnyMethod(); }); }); // 启用策略,注意中间件顺序:放在UseRouting之后,UseAuthorization之前 app.UseCors("AllowLocalOrigin");清除服务器层面的冲突配置
若使用IIS部署,检查web.config,移除<httpProtocol>下的Access-Control-Allow-Origin自定义头:<!-- 移除这类冲突配置 --> <httpProtocol> <customHeaders> <remove name="Access-Control-Allow-Origin" /> </customHeaders> </httpProtocol>验证结果
配置完成后,通过浏览器开发者工具的Network面板查看请求响应头,确认Access-Control-Allow-Origin仅包含一个合法值(如http://localhost:3000)。
内容的提问来源于stack exchange,提问作者Naveen K
相关产品推荐
相关产品推荐

