業務需求:
a網站的登陸地方輸入用戶名密碼,直接跳轉到b網站的首頁,當時公司b網站已經開發好了的,直接拿了他的登陸地址url,看了network里面的login請求需要的參數,找到登陸的頁面url,直接讓跳轉,搞了半天才解決這個問題。
於是就在A頁面寫了ajax請求,拿到測試賬號之后,獲取數據,可以獲取到數據,然后就寫跳轉的頁面,能跳轉過去,但是存不了這個登陸的狀態
cookie的存儲狀態拿到了,但是存不了,最后看來別人的分享之后直接一行代碼解決,后知后覺才知道ajax請求是有同源策略的
一個剛進入開發的小博主分享,堅持遇見更好的自己!歡迎各位指點,評論,技術探討。
問題解決:
完整的無歧義的表述應該是這樣:
1.ajax會自動帶上同源的cookie,不會帶上不同源的cookie
2. 可以通過前端設置withCredentials為true, 后端設置Header的方式讓ajax自動帶上不同源的cookie,但是這個屬性對同源請求沒有任何影響。會被自動忽略。
3. 這是MDN對withCredentials的解釋: MDN-withCredentials ,我接着解釋一下同源。
眾所周知,ajax請求是有同源策略的,雖然可以應用CORS等手段來實現跨域,但是這並不是說這樣就是“同源”了。ajax在請求時就會因為這個同源的問題而決定是否帶上cookie
————————————————
原文鏈接:https://blog.csdn.net/Alice_124/article/details/81705099
$(".zhangButton").click(function () { let zhangName = $("input[name='zhangName']").val() let zhangPass = $("input[name='zhangPass']").val() let zhangUrl = 'https://xxxxxxxx/login'//登錄接口 layui.use('layer', function () { var layer = layui.layer;
$.support.cors = true;//允許ajax跨域
$.ajax({ method: 'post', url: zhangUrl, data: JSON.stringify({ loginName: zhangName, password: hex_md5(zhangPass) }), contentType: "application/json",//傳遞數據格式 xhrFields: { withCredentials: true },//允許攜帶cookie success: function (res) { console.log(res) if (res.code == "200") { layer.msg('正在跳轉請稍等...'); setTimeout(function () { window.open('https://xxxxxx/home') } }, 1000) } else { layer.msg('請輸入正確的用戶名和密碼'); } } }); }); })