WebAPI+Html跨域时对session的支持

2018-09-19 02:58:19来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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中添加跨域支持:

 

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

 

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}。


<script>
        
        var url = "http://*.*.*.*:8089/";
        var userId = "002";
        var userName = "xiaoming";
        var password = "123456";
        
        
        $(function () {

            btnRegClick();
            btnGetNameClick();
        });

       
        
        
        function btnRegClick(){
            $("#btnReg").click(function () {
                
                $.ajax({
                    type: "get",
                    url: url + "Reg/RegUser",
                     xhrFields: {
                     withCredentials: true
                     },
                    crossDomain: true,
                    data: {
                        userId: userId,
                        userName: userName,
                        password: password
                    },
                    success: function (result) {
                        $("#txtUserName").val(result)
                    }
                });
                
            });
        }
        
        
        function btnGetNameClick(){
            $("#btnGetName").click(function () {
                
                $.ajax({
                    type: "get",
                    url: url + "Login/GetLogin",
                     xhrFields: {
                     withCredentials: true
                     },
                    crossDomain: true,
                    data: {
                    },
                    success: function (result) {
                        $("#txtUserName").val(result)
                    }
                });
                
            });
        }

<script>
        

 

6、搞定。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:记录.net使用ueditor富文本编辑器

下一篇:AspNet 集合交集、并集、差集操作