代码之家  ›  专栏  ›  技术社区  ›  George Mauer

Net Cors返回选项的头,但不返回GET请求的头

  •  0
  • George Mauer  · 技术社区  · 6 年前

    使用 Microsoft.Owin.Cors 在.Net Mvc中 (非核心) 项目I在启动时配置cors,如下所示:

    var cors = new CorsPolicy {
      AllowAnyHeader = true,
      SupportsCredentials = true,
    };
    cors.Origins.Add("http://localhost:3006");
    cors.Methods.Add("GET");
    cors.Methods.Add("POST");
    cors.Methods.Add("PUT");
    cors.Methods.Add("DELETE");
    cors.Methods.Add("OPTIONS");
    app.UseCors(new CorsOptions {
      PolicyProvider = new CorsPolicyProvider {
        PolicyResolver = ctx => Task.FromResult(cors)
      }
    });
    

    当我从localhost:3006上的站点执行跨源查询时,我得到一个成功的OPTIONS preflight请求,然后是一个成功但被阻止的get请求。

    OPTIONS followed by a blocked GET

    当我检查反应时,我明白了

    access-control-allow-credentials: true
    access-control-allow-headers: authorization
    access-control-allow-origin: http://localhost:3006
    

    关于选择的回应,但不是关于得到!

    为什么不呢?我需要什么才能使它正常工作?

    0 回复  |  直到 6 年前
        1
  •  0
  •   George Mauer    6 年前

    所以我花了一整天的时间才把它修好。我无法使用Owin处理程序使其工作。对我的提示是,选项成功但失败。

    我怀疑在.Net框架中,Mvc实际上发生在Owin管道之外,因为它直接连接到System.Web。虽然我确信有办法通过修改web.config来解决这个问题,但在我的例子中,我真的 只有 我的web api处理的路由需要CORS,因此切换到 Microsoft.AspNet.WebApi.Cors 成功了。