CORS 政策 - 对预检请求的响应
Posted
技术标签:
【中文标题】CORS 政策 - 对预检请求的响应【英文标题】:CORS policy - response to preflight request 【发布时间】:2021-02-18 17:23:57 【问题描述】:我正在我的 .NET Core 3.1 Web 应用程序中设置 CORS 策略,但我收到一条错误提示
Access to XMLHttpRequest at 'http://10.10.100.60/api/api/values/getmyorders?toOrder=false&uId=8c3d745b-78b7-47ed-ac93-310fe61b8daf' from origin 'http://10.10.100.66:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我以前从未遇到过这种预检错误。
这是我的Startup
的样子
public void ConfigureServices(IServiceCollection services)
//code shortened for brevity
services.AddCors();
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
loggerFactory.AddProvider(new Log4NetProvider("log4net.config", true));
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
app.UseCors(x => x
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseMvc();
我还尝试使用其他 CORS 方法,例如带有命名策略和中间件的 CORS 以及默认策略,但我仍然遇到相同的预检错误。关于如何进行的任何建议?
【问题讨论】:
您是否有机会使用身份服务器 4?你有开放 id 连接的身份验证吗? 只是想一想,可能是因为app.UseHttpsRedirection(),客户端请求在http上,可能是因为app.UseHttpsRedirection(),当它到达服务器时被重定向到https。 不,我不使用身份服务器 - @nalnpir 我也想过,我删除了app.UseHttpsRedirection()
并出现了同样的错误 - @RameshKanjinghat
【参考方案1】:
这就是几个小时后对我有用的方法。
public void ConfigureServices(IServiceCollection services)
services.AddCors(options =>
options.AddPolicy("AllowAllHeaders",
builder =>
builder.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
);
);
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
app.UseCors("AllowAllHeaders");
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseMvc();
我现在只使用AllowAnyOrigin()
、AllowAnyHeader()
和AllowAnyMethod()
。我认为AllowCredentials()
存在问题。希望这个答案对将来的人有所帮助。
【讨论】:
以上是关于CORS 政策 - 对预检请求的响应的主要内容,如果未能解决你的问题,请参考以下文章
从源 xxxx 访问 XMLHttpRequest ' 被 CORS 策略阻止:对预检的响应。预检请求不允许重定向
为啥 CORS 错误“对预检请求的响应未通过访问控制检查”?