谷歌瀏覽器無法單點登錄帆軟的問題


 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>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM