.NetCore jquery No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问

时间:2018-05-15 14:27:32

标签: jquery http-post asp.net-core-2.0

如果我尝试向web api控制器发送请求,我将在Web浏览器下收到错误消息: " No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问。响应的HTTP状态代码为500。"

这是我的jquery帖子请求:

$.ajax({
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            type: "POST",
            url: "http://localhost:12345/api/xs/" + selectedId,
            data: JSON.stringify(anyObj),
            dataType: "json"
        });

这是一个(web api)控制器:

    [Route("api/[controller]")]
    public class XSController : Controller
    {
        [HttpPost("{id}")]
        [EnableCors("AllowAll")]
        //[DisableCors()]
        public async Task<IActionResult> Post(ushort id, [FromBody]AnyObjVM model)
        {
        }
    }

和startup.cs文件:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("AllowAll",
              builder =>
              {
                  builder.AllowAnyOrigin()
                         .AllowAnyHeader()
                         .AllowAnyMethod()
                         .AllowCredentials()
                         ;
              });
    });
}

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); }

        app.UseDefaultFiles();
        app.UseStaticFiles();
        app.UseCors("AllowAll");
        app.UseMvc();
    }

请求标题:

Accept: application/json
Accept-Encoding: gzip, deflate, br
Accept-Language: pl-PL,pl;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Length: 166
Content-Type: application/json
Host: localhost:12345
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36

我尝试在startup.cs文件和控制器方法中启用/禁用CORS。 WebAPI在IIS Express上的本地计算机上运行。 调用web api的站点也在我的本地计算机上 - 我手动运行站点(单击站点文件),这就是为什么origin设置为null。通常我可以调用web api方法,有时不是。 我还尝试使用选项--disable-web-security运行chrome(可选地使用--user-data-dir =&#34; d:/ temp_chrome&#34;)但它没有改变任何东西。< / p>

我该如何解决这个问题?

0 个答案:

没有答案