【问题标题】:CORS with OData in Web.Api - modify headers in server response?Web.Api 中带有 OData 的 CORS - 修改服务器响应中的标头?
【发布时间】:2017-02-18 07:34:02
【问题描述】:

在实现 OData 端点并尝试从不同域访问时,我遇到了缺少响应标头“Access-Control-Allow-Origin”预检请求问题的错误。使用常规 api 控制器,可以添加 Access-Control-Allow-Origin 标头以使其工作(如下所示)。但是,对于 OData,我正在努力对请求标头进行此类修改。是否支持 Web API?

    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public async Task<IHttpActionResult> Post(Movie movie)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        // How to sneak in sth like below to Created method or globally:  ?
        // HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, movie);
        // response.Headers.Add("Access-Control-Allow-Origin", "*");

        await _service.AddMovie(movie);
        return Created(movie);
    }

浏览多个来源后,这是我发现的最好的: https://forums.asp.net/t/2032931.aspx?How+to+enable+CORS+in+Odata+NET+service+ ,只有这个是网络表单,我很难在 Web API 中重新应用它。

编辑 我关于网络表单的陈述是错误的,请参阅下面的回答

【问题讨论】:

    标签: c# asp.net-web-api cors odata


    【解决方案1】:

    我使用了我之前附加的示例https://forums.asp.net/t/2032931.aspx?How+to+enable+CORS+in+Odata+NET+service+,只是进行了如下一些修改,它可以很好地让 CORS 与 Odata(OData V3、Chrome、Web API 2.2)一起运行。我关于这是网络表单的说法是非常错误的 - 它只是在应用程序启动时处理事件(在 Adam Freeman 的 Pro MVC 5 平台书 (https://www.amazon.com/Pro-ASP-NET-MVC-5-Platform/dp/1430265418) 中有很好的解释)

        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            if (Context.Request.Path.Contains("odata/"))
            {
                Context.Response.AddHeader("Access-Control-Allow-Origin", "*");
                Context.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
                Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST PUT, DELETE, OPTIONS");
                Context.Response.AddHeader("Access-Control-Allow-Credentials", "true");
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-04
      • 2017-11-17
      • 2016-06-12
      • 2015-02-26
      • 2021-07-14
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多