首頁 > web前端 > js教程 > 主體

如何使用 JavaScript Fetch API 處理登入後的重新導向?

Barbara Streisand
發布: 2024-10-18 07:23:29
原創
562 人瀏覽過

How to Handle Redirects After Login with JavaScript Fetch API?

如何使用 JavaScript Fetch API 登入後將使用者重新導向到另一個頁面?

當使用 fetch() 函數向回應的伺服器執行 POST 請求時使用 RedirectResponse,客戶端將自動遵循重定向。這是因為 fetch() 函數中預設設定了重定向模式。因此,用戶不會被重定向到新的 URL,而是 fetch() 將在幕後遵循該重定向並從重定向 URL 返回回應。

要解決此問題,您可以檢查是否回應是您發出的重定向請求的結果。如果是這樣,您可以檢索回應的url 屬性,該屬性將返回在任何重定向之後**獲得的最終URL,並且使用JavaScript 的window.location.href,您可以將使用者重定向到目標URL(即重定向頁面)。除了 window.location.href 之外,還可以使用 window.location.replace()。與設定href 屬性值的差異在於,使用location.replace() 方法時,導航至給定URL 後,目前頁面不會保存在會話歷史記錄中,這表示使用者將無法使用傳回的頁面按鈕導航到它。

範例程式碼:

<code class="javascript">document.getElementById("myForm").addEventListener("submit", function (e) {
  e.preventDefault(); // Cancel the default action
  var formElement = document.getElementById("myForm");
  var data = new FormData(formElement);
  fetch("http://my-server/login", {
    method: "POST",
    redirect: "follow", // Change it to "manual" if you want to handle redirects manually
    body: data,
  })
    .then((res) => {
      if (res.redirected) {
        window.location.href = res.url; // or, location.replace(res.url);
        return;
      } else {
        return res.text();
      }
    })
    .then((data) => {
      document.getElementById("response").innerHTML = data;
    })
    .catch((error) => {
      console.error(error);
    });
});</code>
登入後複製

注意:如果您使用跨來源請求,您將需要在伺服器端設定Access-Control- Expose-Headers 回應標頭以包含Location 標頭。這是因為預設僅公開 CORS 安全清單回應標頭。

以上是如何使用 JavaScript Fetch API 處理登入後的重新導向?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!