【问题标题】:How do clients handle JavaScript after they receive the "Location" HTTP header?客户端在收到“Location”HTTP 标头后如何处理 JavaScript?
【发布时间】:2014-10-16 19:30:30
【问题描述】:

考虑代码:

somepage.php

<?php header('Location: index.php'); ?>
<!DOCTYPE html>
<html>
  <head>
   <script>
     doSomething(); // does the browser run this?
   </script>
  </head>
</html>

我正在尝试将 Google Analytics 放在那里,但我不确定人们是否真的在加载分析 JS。

浏览器是否真的在Location 标头发送后查看输出?如果是这样,它真的运行 JavaScript 吗?

【问题讨论】:

  • 这是不正确的。它将Location:标头发送给客户端,客户端执行重定向。
  • @JayBlanchard:呃,不。重定向发生在客户端,以响应服务器向其发送位置标头。
  • @jason:你遇到了竞争条件。一旦客户端收到Location 标头,它可能决定加载/处理页面的其余部分,或者完全放弃它并立即开始重定向。你根本无法保证JS脚本会被解析,更别说被执行了。
  • 我的错 - 我知道。当我这么说时,我只是在另一个地方。

标签: javascript php http google-analytics http-headers


【解决方案1】:

大多数浏览器在发送重定向标头时会忽略响应正文。所以它不会显示 HTML,也不会执行 Javascript。

如果您想在重定向之前执行某些操作,请不要使用 Location: 标头。发送一个执行 Javascript 的页面,然后执行

window.location.href = "index.php";

【讨论】:

  • 谢谢,我担心我不得不这样做。
猜你喜欢
  • 2019-06-01
  • 1970-01-01
  • 2013-09-24
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 2022-11-17
  • 1970-01-01
相关资源
最近更新 更多