如果我尝试向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>
我该如何解决这个问题?