CORS 问题:C# API 请求适用于一个域,但不适用于另一个域
Posted
技术标签:
【中文标题】CORS 问题:C# API 请求适用于一个域,但不适用于另一个域【英文标题】:CORS Issue: C# API requests work for one domain, but not to the other 【发布时间】:2021-07-19 21:30:34 【问题描述】:我遇到了 CORS 问题。我有一个 Internet IIS 服务器,其中两个域共享相同的代码(多租户应用程序)和一个用于 API 的域。
API 配置为接受 CORS:
启动ConfigureServices():
services.AddCors(options =>
options.AddDefaultPolicy(builder => builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().SetIsOriginAllowed(origin => true).AllowCredentials()));
services.AddMvc();
启动Configure():
app.UseCors(options =>
options.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowed(origin => true)
.AllowCredentials()
);
javascript 请求:
axios.post(apiurl + '/api/Usuario/primeiroacesso', '"' + this.email + '"',
headers:
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
'Access-Control-Allow-Headers': 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers',
'Content-Type': 'application/json',
hash: _hc
)
.then(res =>
console.log(res);
if (res.status == 200)
alert('Verifique sua conta de email');
else
alert("O email informado não foi encontrado");
)
此代码适用于 Domain1 请求,但是当我在 Domain2 上执行相同请求时,我收到了 CORS 错误。
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:试试这个 API 语法
public void ConfigureServices(IServiceCollection services)
services.AddCors(o => o.AddPolicy("AllowAnyOrigins", builder =>
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
));
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
......
app.UseCors("AllowAnyOrigins");
.....
并从 javascript 中删除所有 Cors 标头,除非您确定需要它们。
【讨论】:
以上是关于CORS 问题:C# API 请求适用于一个域,但不适用于另一个域的主要内容,如果未能解决你的问题,请参考以下文章
对外部 API 的 HTTP 请求适用于 .NET,但不适用于 React(CORS 问题)
为啥 CORS 适用于 API 请求,但不适用于我的 Nginx 配置中的媒体文件(例如 mp4、webm)?
多个 CORS 适用于 GET 但不适用于 PUT/POST 与飞行前请求 Web api 2
使用 CORS 与 LocomotiveJs 一起休息 API。适用于本地机器,但不适用于 Amazon 或 Heroku