【发布时间】:2017-11-12 12:43:36
【问题描述】:
services.AddCors(options =>
{
options.AddPolicy("mypolicy",
builder =>
{
builder.AllowAnyHeader();
builder.AllowAnyMethod();
builder.AllowAnyOrigin();
builder.AllowCredentials();
});
});
app.UseCors("mypolicy");
[HttpGet("")]
public object Index(string hello)
{
this.HttpContext.Session.SetString("hello", hello);
return new {data = "Connected to API"};
}
Http Get 请求到 Index 方法的错误与
'请求的资源上不存在'Access-Control-Allow-Origin'标头。'
虽然 CORS 配置中明确允许原点,但微软到底是什么!??如果我删除 Session.SetString 行,它仍然有效
【问题讨论】:
-
确保您的代码不会抛出任何异常。异常被
UseExceptionHandler/UseDeveloperExceptionPage中间件捕获。发生这种情况时,headers are clear,这也意味着UseCors中间件设置的CORS headers也被清除,这导致浏览器由于违反同源策略而拒绝请求。因此,在此处咆哮之前,您应该熟悉 ASP.NET Core 管道的工作原理以避免误解并因此指责错误的人 -
大声笑,我已经得到了它们,我没有看到任何异常,而且当我从它自己的来源(从 webapi 发送的前端)访问页面时,代码可以正常工作,肯定会清除标题,没有kestrel 日志中也留下了信息,整个 asp.net 都是黑色的潘多拉盒子
-
第一次请求之前,您是否确保已设置 cookie?如果没有 cookie,会话中间件需要设置 cookie 以便在下次调用时识别会话。在无状态服务中使用会话(WebApi 是 REST 服务的主要,应该是无状态的)无论如何都是一个坏主意。请求所需的所有数据都应随请求一起发送,这就是 REST 服务的意义
标签: asp.net asp.net-core asp.net-core-webapi