/** * 中控 iframe 嵌入鉴权:跨站时第三方 Cookie 常被拦截,改用 embed_sso 头维持登录. * 须在其它业务脚本之前加载. */ (function () { "use strict"; var KEY = "hub_embed_sso"; try { var q = new URLSearchParams(location.search || ""); var fromUrl = (q.get("embed_sso") || "").trim(); if (fromUrl) { sessionStorage.setItem(KEY, fromUrl); q.delete("embed_sso"); var next = location.pathname; var rest = q.toString(); if (rest) next += "?" + rest; next += location.hash || ""; history.replaceState(null, "", next); } } catch (_) {} function currentToken() { try { return (sessionStorage.getItem(KEY) || "").trim(); } catch (_) { return ""; } } function withAuthHeaders(init) { var tok = currentToken(); if (!tok) return init; init = init ? Object.assign({}, init) : {}; var headers; try { headers = new Headers(init.headers || {}); } catch (_) { headers = new Headers(); } if (!headers.has("X-Hub-Embed-SSO")) { headers.set("X-Hub-Embed-SSO", tok); } init.headers = headers; if (!init.credentials) init.credentials = "same-origin"; return init; } if (typeof window.fetch === "function") { var origFetch = window.fetch.bind(window); window.fetch = function (input, init) { return origFetch(input, withAuthHeaders(init)); }; } window.HubEmbedAuth = { token: currentToken, clear: function () { try { sessionStorage.removeItem(KEY); } catch (_) {} }, }; })();