[英]Javascript how to redirect to another website and send the JWT as bearer token as well
我需要重定向到另一個網站並將 JWT 作為不記名令牌發送。
我可以使用 fetch 來做嗎?
像這樣:
$( document ).ready( function() {
document.getElementById('Aother-Website-Link').addEventListener('click', event => {
event.preventDefault();
fetch('Another-Website-Link',
{
mode: "cors",
method: "GET",
headers: {
'Authorization': `Bearer ${jwt}`
}
})
.then(() => {
window.location.href = 'Another-Website-Link';
})
.catch(error => {
console.error(error);
});
});
不,你不能這樣做。 首先,cookies 不能轉移也不能跨域設置,cookies 只能在服務器位於同一域或子域時設置。
如果您的網站是website1.com
並且您向backend2.com
發出 fetch 請求,則backend2.com
無法為您的網站設置任何 cookies。 如果您想在您的網站上設置 cookies,您的網站應該向同一域 ( website1.com/api/something
) 或類似api.website1.com
的子域發出提取請求。
考慮到這一點,不,您不能將 cookies 重定向和轉移到另一個網站。
如果您有權訪問該站點,則可能有解決方案。 您可以在要重定向到的站點上設置自定義路由,將其稱為/redirectCallback
之類的名稱,然后您可以重定向用戶並通過 url 查詢( /redirect callback?cookie1Val=...
) 以便您要重定向到的網站可以解析這些值,將它們發送到他們的服務器,然后他們的服務器可以設置相同的 cookies,或者,如果您想要更高的安全性並且您也恰好有一個數據庫集向上,您可以在重定向之前在您的服務器上創建一個帶有id
和cookieValue
字段的臨時switchSession
並通過 url 查詢發送它的 id ( /redirectCallback?redirectSessionId=...
) 然后網站可以再次解析它,將它發送到他們的服務器,他們的服務器將解析您數據庫中的數據,然后刪除redirectSession
並再次將您的 cookies 發送到客戶端(如果您想要更高的安全性,您可以實施簽名/驗證)。
我希望它有所幫助!
編輯:拼寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.