CORS:对预检请求的响应未通过访问控制检查
Posted
技术标签:
【中文标题】CORS:对预检请求的响应未通过访问控制检查【英文标题】:CORS : Response to preflight request doesn't pass access control check 【发布时间】:2019-09-09 03:46:57 【问题描述】:它显示的 CORS 问题:
选项https://dev-01-api-apptracker2/Admin 401(未经授权)
从源“https://dev-01-web-apptracker2”对“https://dev-01-api-apptracker2/Admin”处的 XMLHttpRequest 的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头出现在请求的资源上。
但我想我已经在我的 ajax 代码中添加了一个标头 'Access-Control-Allow-Origin': '*',并尝试了很多方法来解决这些 CORS 问题,我设置了 dataType: 'json', crossDomain: true , and withCredentials: true, 并且还添加了不同的origin domain。但我仍然得到错误。 我不知道这是怎么回事,有没有人可以帮助我。谢谢!!
AddAdmin: function (callback, UserId)
$.ajax(
headers:
'Accept': 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Headers': 'origin, X-Custom-Header',
'Access-Control-Allow-Method': 'POST',
'Access-Control-Allow-Origin': '*'
,
contentType: 'application/json',
method: "POST",
url: Services.APIBaseUrl + "Admin",
dataType: 'json',
crossDomain: true,
data: JSON.stringify(UserId),
xhrFields:
withCredentials: true
,
complete: function (data)
callback(data);
);
,
public void ConfigureServices(IServiceCollection services)
services.AddCors(options =>
options.AddPolicy("APIAllowedOriginsPolicy",
builder =>
builder.WithOrigins("https://dev-01-web-apptracker2",
"http://localhost:31474")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
);
);
services.Configure<MvcOptions>(options =>
options.Filters.Add(new CorsAuthorizationFilterFactory("APIAllowedOriginsPolicy"));
);
services.AddAuthentication(IISDefaults.AuthenticationScheme);
// Add framework services.
services
.AddMvc()
.AddJsonOptions(options =>
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
);
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
//app.UseCors("APIAllowedOriginsPolicy");
app.UseCors(builder =>
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
);
app.UseMvc();
【问题讨论】:
【参考方案1】:我发现问题是因为 IIS 身份验证问题,它需要允许 CORS 的 windows auth 和匿名。
【讨论】:
以上是关于CORS:对预检请求的响应未通过访问控制检查的主要内容,如果未能解决你的问题,请参考以下文章
OAuth 中的 CORS:对预检请求的响应未通过访问控制检查
cors(cors 策略:对预检请求的响应未通过访问控制检查)角度 7 中的错误