一
chrome://flags/ 然后搜索框搜索 sameSite, 將SameSite by default cookies 設置為disable
更多http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html
第二種
<html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>數據決策系統</title> <!-- 自定義樣式,根據實際需求使用 --> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> <style> .container { display: flex; justify-content: center; } .login-box { width: 300px; margin-top: 100px; } .login-box h2 { font-size: 26px; text-align: center; margin-bottom: 25px; } .login-item { margin-bottom: 20px; } </style> </head> <body> <div class="container" style="display:none"> <form class="login-box" action="" method="post" onsubmit="return false;"> <h2>數據決策系統</h2> <div class="login-item"> <label for="inputUsername" class="sr-only">用戶名</label> <input type="text" id="inputUsername" class="form-control" placeholder="用戶名" required="" autofocus=""> </div> <div class="login-item"> <label for="inputPassword" class="sr-only">密碼</label> <input type="password" id="inputPassword" class="form-control" placeholder="密碼" required=""> </div> <button class="btn btn-lg btn-primary btn-block" type="submit" id="submitBtn">登錄</button> </form> </div> <script src="http://domain:port/webroot/decision/file?path=/com/fr/web/ui/fineui.min.js&type=plain&parser=plain"></script> <script> document.getElementById("submitBtn").addEventListener("click", function () { doSubmit(); }); function doSubmit() { var username = document.getElementById("inputUsername").value.trim(); var password = document.getElementById("inputPassword").value.trim(); if (username === "") { window.alert("請輸入用戶名"); return false; } if (password === "") { window.alert("請輸入密碼"); return false; } /** * 通過登錄接口發送post請求,攜帶用戶名密碼等信息 */ $.ajax({ url: "http://domain:port/webroot/decision/login", contentType: "application/json", type: "POST", dataType: "json", data: JSON.stringify({ username: username, password: password, validity: -1, origin: getUrlQuery("origin") }), success: function (res) { // 登錄成功后保存是否保持登錄狀態以及token if (res.data) { var data = res.data; var day = data.validity === -2 ? (14 * 24) : -1; BI.Cache.addCookie("fine_remember_login", data.validity, "/", day); BI.Cache.addCookie("fine_auth_token", data.accessToken, "/", day); // 然后跳轉到相應的頁面 var response = data.originUrlResponse; if (BI.toUpperCase(response.method) === "GET") { window.location.href = response.originUrl; } else { doActionByForm(response.originUrl, response.parameters, {method: response.method}); } } else { // 提示錯誤信息 alert(res.errorMsg); } }, error: function () { alert("超時或服務器其他錯誤"); } }); } // 查詢url參數 function getUrlQuery (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if (r !== null) return r[2]; return ""; } // 通過form表單跳轉 function doActionByForm (url, data, options) { options = options || {}; var config = { method: options.method, url: url, data: data, target: options.target }; var $form = $("<form method=\"" + config.method + "\" />"); $form.attr("action", config.url); $form.attr("method", config.method || "post"); $form.attr("target", config.target || "_self"); for (var key in config.data) { $form.append("<input type=\"hidden\" name=\"" + key + "\" value=\"" + config.data[key] + "\" />"); } $(document.body).append($form); $form[0].submit(); $form.destroy(); } </script> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> function getQueryVariable(variable){ var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="); if(pair[0] == variable){return pair[1];} } return(false); } var username = getQueryVariable("username"); var password = getQueryVariable("password"); if(username == false){ $(".container").show() } else { document.title = "跳轉中" var REPORT_SERVER_URL = 'http://domain:port/webroot/'; var url = REPORT_SERVER_URL + "decision/login/cross/domain" + "?fine_username=" + username + "&fine_password=" + password + "&validity=" + -1; jQuery.ajax({ url:url,//單點登錄的FineBI服務器 timeout:60000,//超時時間(單位:毫秒) dataType:"jsonp",//跨域采用jsonp方式 //data:{"fr_username":username,"fr_password":password}, jsonp:"callback", success: function (res) { if (res.errorCode) { window.alert(res.errorMsg); }else { var para = "width=800,height=600,menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes"; location.href = res.url; } }, error:function(){ alert("登錄失敗,超時或服務器其他錯誤!"); // 登錄失敗(超時或服務器其他錯誤) } }); } </script> </body> </html>