Web Api跨域解決及Session使用

  • 跨域解決

1、使用Nuget添加Cors包

2、全局跨域

3、部分方法允許跨域

如果不想所有方法都能被跨域訪問,可以使用[EnableCors]屬性指定,具體實現如下:

a)  WebApiConfig.cs文件保持開啓跨域支持

b)  在方法或控制器上配置屬性

  • 跨域Session問題

1、Web Api默認關閉Session。開啓方法如下:

在Global.asax文件中添加方法如下:

//初始化開啓Session
        public override void Init()
        {
            this.PostAuthenticateRequest += (sender, e) =>
            {
                HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
            };
            base.Init();
        }

2、由於跨域時默認是不允許操縱cookie的,這會導致每次跨域調用方法都是使用的不同的sessionId,開啓session的意義就不存在了,需要進行如下設置進行解決:

    a)  WebApiConfig文件配置跨域的語句改爲如下所示:

 // 開啓全局跨域
            var cor = new EnableCorsAttribute("http://127.0.0.1:5500", "*", "*");
            cor.SupportsCredentials = true;// 允許cookie發送,否則session不可用
            config.EnableCors(cor);

    b)   前端js配置全局ajax

// ajax全局設置
$.ajaxSetup({
    xhrFields: {
        withCredentials: true // 跨域允許存取cookie
    }
});
  • 參考文檔

實現參考:https://www.cnblogs.com/landeanfen/p/5177176.html

方法跨域提示:https://yq.aliyun.com/wenzhang/show_56581

跨域session:https://www.cnblogs.com/zhaoshang/p/9378928.html

jquery ajax 設置全局(常量和變量):https://www.cnblogs.com/007sx/p/7048373.html

cors詳解:https://blog.csdn.net/java_green_hand0909/article/details/78740765

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章