您的位置:首页 > 其它

WCF 构建REST Service 跨域访问解决方法

2017-06-22 15:28 337 查看
服务端是用vs2013里WCF做的REST风格的web service。

客户端是用jquery+ajax访问web service。

参考 http://www.topwcftutorials.net/2014/01/crud-wcf-restful-service.html。

调试中发生跨域访问错误,试了很多方法,终于解决。

参考 https://www.codeproject.com/Articles/845474/Enabling-CORS-in-WCF。
解决方法就是增加两个文件, Global.asax 和 Global.asax.cs。

Global.asax 就一句话:

<%@ Application Codebehind="Global.asax.cs" Inherits="Wcf.App.Global" Language="C#" %>

Global.asax.cs 内容如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;

namespace Wcf.App
{
public class Global : System.Web.HttpApplication
{

protected void Application_Start(object sender, EventArgs e)
{

}

protected void Session_Start(object sender, EventArgs e)
{

}

protected void Application_BeginRequest(object sender, EventArgs e)
{
//HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, PUT, DELETE");

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}

protected void Application_AuthenticateRequest(object sender, EventArgs e)
{

}

protected void Application_Error(object sender, EventArgs e)
{

}

protected void Session_End(object sender, EventArgs e)
{

}

protected void Application_End(object sender, EventArgs e)
{

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  WCF REST CORS 跨域