【问题标题】:ASP owin somehow overrides CORS header, where can I disable this?ASP owin 以某种方式覆盖了 CORS 标头,我在哪里可以禁用它?
【发布时间】:2015-07-04 21:42:56
【问题描述】:

在我的 API 的选项响应中,我看到:

Access-Control-Allow-Origin:http://localhost:19600

我想要的是全部启用 CORS:

Access-Control-Allow-Origin:*

我应该注意到它确实有效,但突然停止工作。但我不知道为什么。

在我的 OWIN 启动配置中:

app.UseCors(CorsOptions.AllowAll);
var config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);

有人在另一个帖子中建议将app.UseCors(CorsOptions.AllowAll); 放在首位会有所帮助,但它没有。

我发现有一种方法可以在Web.config<system.webServer><httpProtocol><customHeaders> 中创建自定义标头。

我尝试添加<add name="Access-Control-Allow-Origin" value="*" /> 行,但这会导致两个标题,浏览器不接受。由<remove name="Access-Control-Allow-Origin"/> 删除没有效果(与添加都没有)。

还有其他可以设置标题的地方我忽略了吗?

【问题讨论】:

    标签: asp.net http-headers cors owin


    【解决方案1】:

    我设法找到了解决方法。

    我不知道这意味着什么,但它有效

    将此添加到 OWIN 配置中

    private static void ConfigureCORSHeader(IAppBuilder app)
    {
        app.Use(async (context, next) =>
        {
            var req = context.Request;
            var res = context.Response;
    
            res.Headers.Set("Access-Control-Allow-Origin", "*");
    
            if (req.Method == "OPTIONS")
            {
                res.StatusCode = 200;
                res.Headers.AppendCommaSeparatedValues("Access-Control-Allow-Methods", "GET", "POST", "DELETE");
                res.Headers.AppendCommaSeparatedValues("Access-Control-Allow-headers", "authorization", "content-type");
    
                return;
            }
    
            await next();
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 2016-02-01
      • 2015-09-29
      • 1970-01-01
      • 2021-09-03
      • 2015-07-05
      相关资源
      最近更新 更多