我的问题缩小了示例:
session_start
之前的变体标题<?php
header("Expires: ".gmdate("D, d M Y H:i:s", time() ) . " GMT");
session_start();
exit;
//Headers Received in the Browser: Expires: Thu, 19 Nov 1981 08:52:00 GMT
标题之前的变量session_start(按预期工作)
<?php
session_start();
header("Expires: ".gmdate("D, d M Y H:i:s", time() ) . " GMT");
exit;
//Headers Received in the Browser: Expires: Thu, 29 Mar 2018 06:42:07 GMT
在设置标题之前调用session_start()
时,一切正常并且符合预期。
但是,当我在设置标题后调用session_start()
时,标题不会按照header(...)
中的设置发送到浏览器。
这是什么原因?为什么session_start()&#39;清除&#39;所有的标题?
答案 0 :(得分:2)
我不知道这种行为,所以我查找了功能文档 以下是一些可以帮助您了解正在发生的事情的链接:
http://php.net/manual/en/function.session-start.php
“注意:
此函数根据配置发送多个HTTP头。请参阅session_cache_limiter()以自定义这些标头。“
http://php.net/manual/en/function.session-cache-limiter.php
实际上,根据session_cache_limiter()
的配置,使用session_start()
可以覆盖标题“Expires”,“Cache-Control”和“Last-Modified”。
希望它有所帮助。