【问题标题】:How to enable CORS in odata?如何在 odata 中启用 CORS?
【发布时间】:2020-11-24 12:46:11
【问题描述】:

我按照以下步骤解决 CORS 问题。

1.使用 nuget 安装 Microsoft.AspNet.WebApi.Cors。

2.在WebApiConfig.cs中添加以下代码

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

大部分 API 都可以使用。只有 oData API 仍然存在 CORS 问题。

如何解决 oData API 中的 CORS 问题?

编辑:

在 Global.asax 中输入下面的代码后,它就可以工作了。

        protected void Application_BeginRequest(object sender, EventArgs e)
    {
        if (Context.Request.Path.Contains("odata/") && Context.Request.HttpMethod == "OPTIONS")
        {
            Context.Response.AddHeader("Access-Control-Allow-Origin", Context.Request.Headers["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");
            Context.Response.End();
        }
    }

【问题讨论】:

    标签: c# api cors odata


    【解决方案1】:

    看看这个answer,上面说你可以尝试添加:

    var cors = new EnableCorsAttribute(
        "http://localhost:7122/",
        "*",
        "*",
        "DataServiceVersion, MaxDataServiceVersion"
    );
    config.EnableCors(cors);
    

    【讨论】:

    • 使用 Fiddler 并发布 HTTP CORS 流量跟踪,也可能在浏览器控制台中发布错误。还要发布您完整的 WebApiConfig 方法,您可以在其中配置各种点点滴滴。
    猜你喜欢
    • 2014-07-29
    • 2015-05-27
    • 2018-10-19
    • 2021-04-14
    • 2019-08-16
    • 2018-10-08
    相关资源
    最近更新 更多