學習了解跨域請求攜帶cookie的問題,需要從頁面和后台兩處設置。
.net Core api后台接口項目可在設置跨域策略處,設置響應頭Access-Control-Allow-Credentials響應頭為"true",
允許跨域請求攜帶cookie,還需設置Access-Control-Allow-Origin為當前的請求域名。
正好,net core跨域策略已經全部處理好,只需在添加跨域策略時用到兩個方法,AllowCredentials()為允許跨域憑據(包含cookie和http身份驗證方案)和
withOrigins()設置跨域請求域名。
頁面中如果用ajax發起請求,默認跨域請求不攜帶cookie,如果需要ajax發起跨域請求並攜帶cookie需設置xhrFields為true。
從后台和頁面兩處設置,即可完成跨域請求攜帶cookie的問題。
但layui框架的表格渲染分頁雖然支持跨域請求,但該請求不攜帶cookie,所以無法從頁面請求時攜帶cookie給后台接口,后台接口的cookie為null。
又因為layui底層使用jquey和ajax處理請求,所以可以在使用layui框架各模塊的功能之前,設置ajax全局參數帶上xhrFields為true即可,這樣之后的ajax跨域請求都可攜帶cookie,而無需單獨設置。
這樣表格渲染請求時也帶上了cookie。
也可以設置ajax全局請求頭(自定義一個請求頭),參數值設置為cookie的值也可以,這樣后台接口也可以直接從請求頭獲取cookie的值。
layui框架設置如下:
layui.use(['table', 'layer', 'form', 'laydate'], function () {
var table = layui.table,
$ = layui.$,
laydate = layui.laydate,
form = layui.form,
layer = layui.layer;
-
//ajax全局參數設置 OK$.ajaxSetup({
xhrFields: {
withCredentials: true
}
});//