在ajax中启用cors
本文关键字:cors 启用 ajax | 更新日期: 2023-09-27 18:29:32
我是WCF的初学者,我一直在尝试为IIS中托管的WCF服务启用CORS。我浏览了几篇帖子和Stack Overflow问题,所有的答案都让我找到了不同的解决方案,但都不起作用。
有人能给我解释一下如何做到这一点吗?我尝试创建一个global.asax,并添加begin_request事件来设置头,但没有任何改变。这就是我使用的:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}
我应该从哪里开始?实现这一目标的最佳方式是什么?
我假设WCF服务已经启动并运行。在Web.config中修复。在system.webServer部分添加以下部分。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
<add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS" />
<add name="Access-Control-Max-Age" value="1728000" />
</customHeaders>
</httpProtocol>
注意
注意!访问控制允许原点设置设置为值"*"
。这将允许所有呼叫者都有访问权限。您只能指定您的呼叫者
从您现有的实现来看,它应该可以工作。然而,我稍微调整了一下代码,它对我有效
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin" , "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS" )
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods" , "GET, POST" );
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Authorization, Origin, Content-Type, Accept, X-Requested-With");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000" );
HttpContext.Current.Response.End();
}
}