首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.Net5 EnableCors不工作

Asp.Net5 EnableCors不工作
EN

Stack Overflow用户
提问于 2015-10-14 04:44:44
回答 2查看 445关注 0票数 1

我的Asp.Net5 Web在Chrome上不能工作,这是由于CORS的问题,我的CORS配置似乎与我的OAuthBearerAuthentication冲突。在我的Startup.cs中:

代码语言:javascript
复制
    services.AddCors();
    services.ConfigureCors(o => o.AddPolicy("AllowAll", p => p.AllowAnyOrigin()
    .AllowAnyHeader()
    .AllowAnyMethod()
    .AllowCredentials()));

我的控制器看起来像:

代码语言:javascript
复制
    [Authorize(OAuthBearerAuthenticationDefaults.AuthenticationScheme)]
    [EnableCors("AllowAll")]
    public class MyController

然后我得到了No 'Access-Control-Allow-Origin' header is present on the requested resource.

但是,如果我删除authorize属性:

代码语言:javascript
复制
    [EnableCors("AllowAll")]
    public class MyController

那我就被允许..。怎么一回事?

EN

回答 2

Stack Overflow用户

发布于 2015-10-15 10:31:41

您只需将以下内容添加到web.config文件的system.webServer部分:

代码语言:javascript
复制
 <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等内容,而不仅仅是控制器操作服务的资源。

票数 1
EN

Stack Overflow用户

发布于 2015-10-15 07:32:51

首先,清除chrome上的缓存,然后在edge中尝试。Chrome正在吞噬你的错误。

看请求,你应该有2.印前检查和请求本身。

如果印前检查(选项)失败,则甚至不会发出请求。

通常,预检会因为服务器错误500而失败。Exception不包含cors标头,因此这可能是您的问题所在。

好了,现在,问题是chrome不会在任何地方显示错误。所以,你可以在边缘上检查请求,这会给你一个实际的错误(你必须使用开发人员控制台,错误不会在浏览器上显示)或使用fiddler。

现在你可以看到你的错误,你可能知道如何继续,但添加一点我自己面对的东西:

  1. 如果你有services.AddMvc(),这已经将cors添加到流水线中了,所以再次使用services.AddCors()添加它会抛出一个键已经找到的异常。(我认为这是一个错误,可能会在github上提交一个问题)。
  2. 要在使用AddMvc时配置cors,您可以这样做:

services.ConfigureCors(options => options.AddPolicy("AllowAll",P => p.AllowAnyOrigin() .AllowAnyMethod() .AllowCredentials() .AllowAnyHeader());

  • 要将cors实际添加到管道中,您需要在Configure方法上执行app.UseCors("AllowAll");

  • 如果您使用的是app.MapWhen,请注意MapWhen派生,因此您可能需要为所有需要cors的分支指定UseCors,例如您的MapWhen端点。(如果你不知道我在说什么,那就忽略它。)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33112288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档