- 跨域解決
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