如何在 odata 中启用 CORS?

Posted

技术标签:

【中文标题】如何在 odata 中启用 CORS?【英文标题】:How to enable CORS in odata? 【发布时间】: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();
        
    

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

使用 Fiddler 并发布 HTTP CORS 流量跟踪,也可能在浏览器控制台中发布错误。还要发布您完整的 WebApiConfig 方法,您可以在其中配置各种点点滴滴。

以上是关于如何在 odata 中启用 CORS?的主要内容,如果未能解决你的问题,请参考以下文章

如何启用SAP C4C OData Event Notification

如何在 FastAPI 中启用 CORS?

如何在 Sharepoint Online 中启用 CORS

如何使用 CORS 启用自定义标头?

如何在 asp.net web apis 中启用 cors 选项。?

如何在ajax中启用cors?