【发布时间】:2018-09-03 11:23:31
【问题描述】:
所以我遇到了这个非常奇怪的问题。我一直在为此烦恼,我想我错过了一些明显的东西。我有一个带有自定义会话处理程序的 Web 应用程序,该处理程序在存储在服务器端时对会话数据进行加密。在遇到我刚刚添加的一段新代码之前,它运行良好。
if( $behaviorDefined === false ) {
if( !isset( $_GET['systempage'] ) || $_GET['systempage'] != "wikiconfig" ) {
header( "HTTP/1.1 307 Temporary Redirect", true, 307 );
header( "Location: index.php?page=systemconfig&systempage=wikiconfig", true, 307 );
echo "This site is not set up yet.";
exit( 1 );
}
}
更奇怪的是,当我注释掉 2 个标头调用并仅加载正在回显的文本时,cookie 仅在我单击刷新时每隔一个页面加载设置一次。
一些信息:
- $behaviorDefined 是一个布尔值,当声明函数确定站点设置正确时为真。设置为 false 时,它应该重定向到让用户设置站点配置值的页面。
- 这些 GET 值是网站在需要重定向时应该位于的位置,以避免无限重定向。
- 您可以假设会话处理程序按预期工作,因为该问题仅在代码执行进入这部分代码时发生,并且此会话处理程序已在生产中使用了大约一年而没有出现问题。
- 设置的 cookie 为 HttpOnly,路径设置为包含 index.php 文件的根目录。路径与 URI 路径匹配。
- 每次向网页发出 HEAD 请求时,通过 CLI 上的 curl 都会使用需要设置的 cookie 来定义 Set-Cookie。
有什么可能导致浏览器丢弃 cookie 的想法吗?我对此一无所知。有什么方法可以从 PHP 中检查传出标头?
【问题讨论】:
-
尝试使用协议
header( "Location: http://yordomain.com/welcome.php?page=systemconfig&systempage=wikiconfig", true, 307 );在位置标头中传递绝对url -
不幸的是,这并没有解决问题,所有其他重定向都可以正常工作。
标签: php http cookies session-cookies