php - 为什么 heder ('Location:index' )不工作但 window.location.href ='index.php' 工作?

标签 php javascript

我有这样的索引文件

<?php
include('file1.php');
include('file2.php');
?>

在 file1.php 中,我有如下代码。

<?php
echo "hai";
?>

我正在尝试使用 header('Location:index.php') 重定向页面。它会抛出一个错误,类似于输出已经开始。如果我们给出 echo,我知道 header它抛出一个错误。在这种情况下,我尝试使用 Javascript window.location.href='index.php' 进行重定向。它给了我预期的输出,并且没有错误。为什么? .

最佳答案

PHP header 命令正在向响应流发送一条指令,浏览器会将其解释为重定向到新位置。但是,就其性质而言,您只能在开始发送内容之前发送任何类型的 header 。在您的示例中,您发送内容“hai”,然后尝试发送 header 。

现在您的 JavaScript 由 JavaScript 引擎在浏览器中执行。因此,window.location 告诉 javascript 引擎让浏览器请求新页面。这与 http 流中包含的任何信息无关(理论上,该位置可能是 http 之外的其他内容,例如 ftp 或 mailto)。

关于php - 为什么 heder ('Location:index' )不工作但 window.location.href ='index.php' 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4066595/

相关文章:

javascript - 方括号语法中的 Node.js 函数 [function] 或 [function : isBuffer]

JavaScript 来替换用于所有图像的服务器?

php - 无需 super 权限更改MySQL时区

php - 调试 php.ini文件和行

php - 如何获取数组中不重复的元素?

javascript - CSS 规则有一个空白源(在网络检查器中)

php - 查找给定一天的当前月份的第一秒时间戳

php - 生成随机数并添加到 HTML 参数的字符串

javascript - webpack < 5 默认情况下用于包含 Node.js 核心模块的 Polyfill。这已不再是这种情况

javascript - Apollo 客户端在 next.js 、 javascript、 graphql、react js 中出现问题