繁体   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