通过重定向(301),我在http头上写的内容在PHP中消失了


With redirection (301), what I wrote to http header is gone in PHP

在我的web服务的一个端点中,我在http响应标头中添加了一些行,然后它被重定向到服务中的另一个url。这是301重定向,当这个301响应被发送到浏览器时,我写的头以某种方式被删除了。

我调用PHP中的头函数来写入头,然后调用重定向进行301重定向。我错过了什么步骤吗?这是一个粗略的流程:

header("X-my_custom_header:blahblah");
redirect($new_url);

重定向函数正在调用3个标头函数:

header("HTTP/1.1 301 Moved Permanently");
header( "Cache-Control: no-cache");
header("Location: ".$new_url);

新发现:

如果我在重定向函数中移动新的标题添加行(作为函数中的第4行),那么我可以看到这行。

提前感谢!

301重定向触发来自浏览器的新请求。因此,在服务器上创建新的响应,并且该新的响应不具有作为301响应的一部分生成的任何报头。

如果需要持久化一些数据,则需要将其存储在会话中,或者通过301 URL上的GET参数进行传递。