热线(9:00-18:00):13544706711
当前位置: 首页 > 教程技巧 > 

WebAPI+Html跨域时对session的支持

时间: 2018/09/29 09:02:08

1、Global.asax中添加对Session的支持,重新Init方法:


 



public override void Init()
{
this.PostAuthenticateRequest += (sender, e)
=> HttpContext.Current.SetSessionStateBehavior
(System.Web.SessionState.SessionStateBehavior.Required);
base.Init();
}


 


 


2、WebConfig中添加跨域支持:


 






"Access-Control-Allow-Origin" value="http://*.*.*.*:8088" />
"Access-Control-Allow-Credentials" value="true" />
"Access-Control-Allow-Headers" value="Content-Type" />
"Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />



 


3、写Session的Controller


 



[RoutePrefix("Reg")]
public class RegController : ApiController
{
[Route(
"RegUser")]
[HttpGet]
public bool RegUser(string userName)
{
System.Web.HttpContext.Current.Session[
"User"] = userName;
return true;
}
}


 


 


4、读Session的Controller


 



[RoutePrefix("Login")]
public class LoginController : ApiController
{
[Route(
"GetLogin")]
[HttpGet]
public string GetLogin()
{
string userName = string.Empty;

if(System.Web.HttpContext.Current.Session["User"]!=null)
{
userName
= System.Web.HttpContext.Current.Session["User"].ToString();
}

return userName;
}
}


 


5、前端jQuery调用时加上参数crossDomain: true 和 xhrFields: { withCredentials: true}。