Asp.Net5启用码不工作
我的Asp.Net5 Web Api无法在Chrome上运行,这是由于CORS问题,并且我的CORS配置似乎与我的OAuthBeareAuthentication冲突。 在my Startup.cs中:Asp.Net5启用码不工作,asp.net,cors,asp.net-core-mvc,Asp.net,Cors,Asp.net Core Mvc,我的Asp.Net5 Web Api无法在Chrome上运行,这是由于CORS问题,并且我的CORS配置似乎与我的OAuthBeareAuthentication冲突。 在my Startup.cs中: services.AddCors(); services.ConfigureCors(o => o.AddPolicy("AllowAll", p => p.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMet
services.AddCors();
services.ConfigureCors(o => o.AddPolicy("AllowAll", p => p.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()));
我的控制器看起来像:
[Authorize(OAuthBearerAuthenticationDefaults.AuthenticationScheme)]
[EnableCors("AllowAll")]
public class MyController
然后,我发现请求的资源上没有“访问控制允许来源”标题。
但是,如果删除authorize属性:
[EnableCors("AllowAll")]
public class MyController
然后我被允许。。。发生了什么事?首先,清除chrome上的缓存,然后尝试使用edge。Chrome正在吞噬你的错误 看到请求,你应该有2个。 飞行前和请求本身 如果飞行前(选项)失败,甚至不会发出请求 通常预飞失败,因为服务器错误为500。例外情况不包括cors标题,因此这可能是您的问题 好吧,现在问题是chrome不会在任何地方显示错误。 因此,您可以在EDGE上检查请求,这将给您一个实际错误(您必须使用开发者控制台,错误不会显示在浏览器上)或使用fiddler 现在,您可以看到您的错误,您可能知道如何继续,但要补充一点我自己面临的问题:
services.AddMvc()
,这已经将cors添加到管道中,因此使用services.AddCors()
再次添加它会抛出一个键已发现异常。(我认为这是一个bug,可能会在github上提交一个问题)services.ConfigureCors(options =>
options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()
.AllowAnyMethod()
.AllowCredentials()
.AllowAnyHeader()));
app.UseCors(“AllowAll”)代码>关于配置方法
app.MapWhen
请注意MapWhen分叉,因此您可能需要为与MapWhen一起使用的所有需要COR的分支指定UseCOR,如api端点。(如果你不知道我在说什么,就忽略它。)您只需将以下内容添加到web.config文件的
system.webServer
部分:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT" />
<add name="Access-Control-Allow-Headers" value="accept, content-length, content-type" />
</customHeaders>
</httpProtocol>
根据需要修改方法和标题。在这些标题中不能使用*。它还允许您使用AJAX请求图像和HTML等内容,而不仅仅是控制器操作服务的资源。您是如何解决这个问题的?不幸的是,我没有