簡體   English   中英

Javascript 如何重定向到另一個網站並將 JWT 作為不記名令牌發送

[英]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,或者,如果您想要更高的安全性並且您也恰好有一個數據庫集向上,您可以在重定向之前在您的服務器上創建一個帶有idcookieValue字段的臨時switchSession並通過 url 查詢發送它的 id ( /redirectCallback?redirectSessionId=... ) 然后網站可以再次解析它,將它發送到他們的服務器,他們的服務器將解析您數據庫中的數據,然后刪除redirectSession並再次將您的 cookies 發送到客戶端(如果您想要更高的安全性,您可以實施簽名/驗證)。

我希望它有所幫助!

編輯:拼寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM