只是想知道ASP.NET WebAPI中处理CORS(跨源资源共享)的最优雅的方式(目前可用)是什么,所以我可以在多个域上使用XmlHttpRequest?我如何将这种方法集成到每种类型的请求(GEt,POST等)的标题中,还有OPTIONS?
谢谢!
答案 0 :(得分:6)
Tpeczek有一个很好的发现,但是在做我自己的研究时,我发现了一些类似的,也是非常优雅的处理CORS的方法,使你能够在App_Start文件夹的配置文件中配置你的CORS。它全部使用名为Thinkecture的开源库处理。详情请见:
http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/
它有许多优点..您可以配置起源,方法(GET,POST等),访问特定控制器和操作,还可以保持控制器清除任何属性。
支持WebAPI,IIS和ASP.NET MVC!
答案 1 :(得分:3)
Carlos Figueira有很多关于CORS和ASP.NET Web API的帖子:
我个人非常喜欢 Take 2 方法,因为EnableCors
属性可以轻松扩展,让您可以控制允许的来源。
答案 2 :(得分:3)
在web.config文件中添加以下内容(在system.webserver元素内)。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Headers" value="accept, maxdataserviceversion, origin, x-requested-with, dataserviceversion" />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Max-Age" value="1728000" />
</customHeaders>
</httpProtocol>
并在global.aspx.cs文件中添加以下代码
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
{
Response.StatusCode = 200;
Response.End();
}
}
答案 3 :(得分:2)
现在在web api的每晚都有CORS支持
使用nuget:
然后修复web.config中的绑定 然后启用CORS
config.EnableCors(new EnableCorsAttribute())
上阅读有关它的更多信息
编辑19-04-2013 Scott Guthrie在博文中写道:http://weblogs.asp.net/scottgu/archive/2013/04/19/asp-net-web-api-cors-support-and-attribute-based-routing-improvements.aspx
答案 4 :(得分:0)
这取决于你想要控制CORS的细粒度。例如,如果要允许任何域,可以通过在IIS中配置静态CORS头来为所有响应添加静态CORS头。我选择了这种方法和wrote about it here。