簡體   English   中英

如何在客戶端使用 Javascript 檢測頁面是否是重定向

[英]How do you detect if the page is a redirect using Javascript in the client side

有沒有辦法讓我知道當前頁面是來自另一個 URL 的 301 還是 302 重定向? 怎么獲取頁面之前的URL?

HTTP Header 將在那里進行原產地屬性檢查。

簡短的回答,不,您無法分辨重定向的類型。

您可以查看JavaScript中的Referer header:

https://www.w3schools.com/jsref/prop_doc_referrer.asp

document.referrer

這將告訴您用戶在訪問您的頁面之前(通常)正在與哪個頁面進行交互。 它不會告訴您它是否是重定向。 您可以針對該頁面發出 AJAX HTTP 請求,以查看您是否收到 301 或 302 消息。 但這不會 100% 告訴您它是否是重定向。 如果您超過 HTTP 並且引用頁面是 HTTPS,那么這個 header 沒有設置。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer

要獲取 url 使用 document.referrer

據我所知,沒有檢測 301 或 302 的好方法,尤其是通過 javascript。 您可以在這里查看答案以獲取想法(但他們使用 php)。 如果您知道客戶端將來自哪些 url,您可以使用從 document.referrer 獲取的 url 來確定應該采取什么行動。

如果您控制重定向頁面,則可以通過查詢字符串傳遞信息。

重定向.php

<?php
header('Location: target.html?referrer='.$_SERVER['HTTP_HOST'], true, 301);

目標.html

<html>
<head>
  <title>target of redirection</title>
</head>
<body>
  <script>
    const urlParams = new URLSearchParams(window.location.search);
    const referrer = urlParams.get('referrer');
    console.warn('referrer >'+referrer+'<');
  </script>
</body>
</html>

暫無
暫無

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

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