为什么'location'标题字段会立即重定向,而其他标题字段在php中与header()函数一起使用时则不会

时间:2017-04-20 05:03:04

标签: php html apache http

根据PHP Manual

  

header() - 发送原始HTTP标头

现在,

当我使用以下代码时:

header('location:form.html');

然后,标头函数立即将浏览器重定向到 form.html 或者只是在执行上一行后立即发送HTTP响应标头。

但是当我使用相同的 header 函数将一些其他头字段添加到响应头时,例如:

header("X-Sample-Test: foo");
header('Content-type: text/plain');

那为什么不立即发送HTTP响应头?

首先,如果我错了,请纠正我,其次请分享有关HTTP标头的更多信息。

1 个答案:

答案 0 :(得分:1)

正如评论中提到的,PHP.net documentation表示:

  

第二个特例是“Location:”标题。它不仅将此标头发送回浏览器,而且还向浏览器返回REDIRECT(302)状态代码,除非已经设置了201或3xx状态代码。 {{3} }

因此该标题是特殊情况

  

但是当我使用相同的头函数将一些其他头字段添加到响应头

header("X-Sample-Test: foo");
header('Content-type: text/plain');
  

那为什么不立即发送HTTP响应头。​​

它仍然会发送这些标题(您应该能够在浏览器控制台中看到它们 - 例如在网络标签中)但是浏览器不会将用户发送到不同的URL用于重定向标头。

看一下下面的图片,在我加载带有这些标题的PHP页面后,我在网络选项卡中检查了响应头。我突出显示了那些标题。有关查看标题的详细信息,请参阅1Google Chrome

的这些答案。

Mozilla Firefox

您可能会发现在inspecting headers上阅读一些(正面投票的)用户贡献的笔记很有意思。

1 <子> that documentation page