我有一个用done
和fail
腿的ajax呼叫:
$.ajax({
url: apiUrl + "/auth/sign-in",
type: "POST",
dataType: "text",
data: loginFormData,
contentType: "application/x-www-form-urlencoded",
crossDomain: true,
headers: {"Access-Control-Allow-Origin": "*"}
})…..
以及以.fail(function (xhr, status, error) {
形式声明的故障功能
在添加CORS服务时,在我的startup.cs文件中,我是以这种方式设置的:
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy", builder =>
builder.AllowAnyOrigin().AllowCredentials()
.WithMethods("GET", "POST", "HEAD")
.WithHeaders("Acccept", "Accept-Language", "Content-Language", "Content-Type", "Last-Event-ID")
.Build());
});
在我的Web Api方法中,我提出了一个错误:
Exception inner = new Exception { Source = "WebApi: Authorisation" };
throw new UnauthorizedAccessException("You must login",inner);
该代码回落到ajax调用的fail函数中,但错误为空。在浏览器(Chrome)中,出现以下错误:
从原点“ http://localhost:54981/auth/sign-in”到“ http://localhost:54979”处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-来源的标头出现在请求的资源上。
答案 0 :(得分:0)
当有未捕获的异常时,ASP.NET不会发送CORS标头。您必须进行配置。
在github上查看以下问题评论:https://github.com/aspnet/AspNetCore/issues/2378#issuecomment-354673591
此外,您正在发送标头
"Access-Control-Allow-Origin": "*"
从客户端到服务器,这是错误的。它应该从服务器发送到客户端。