【发布时间】:2014-02-07 22:12:04
【问题描述】:
我有一个看起来像这样的传入 HTTP 请求(标准的东西,从客户端返回了几个 cookie):
GET /loggedin.php HTTP/1.1
Cookie: name=Server+Side+Name; path=/
Cookie: role=Role+From+DB; path=/
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.1.1; Build/JRO03C)
Host: www.example.com
Connection: Keep-Alive
Accept-Encoding: gzip
一些 PHP 内容如下:
<?php
$body = "\nThe request's _SERVER['HTTP_COOKIE'] is: " . print_r($_SERVER['HTTP_COOKIE'], true);
$body .= "\nThe request's _COOKIE is: " . print_r($_COOKIE, true);
echo $body;
?>
这会导致以下输出:
The request's _SERVER['HTTP_COOKIE'] is: name=Server+Side+Name; path=/, role=Role+From+DB; path=/
The request's _COOKIE is: Array
(
[name] => Server Side Name
[path] => /, role=Role From DB
)
注意$_COOKIE 中的第二个条目是“路径”而不是“角色”,它的值不正确。
看起来在$_SERVER['HTTP_COOKIE'] 中正确显示的cookie(尽管是连接的)被错误地解析以填充$_COOKIE,但我不敢相信是这种情况。我控制了所有元素,那么我应该做些什么不同的事情来将正确的值输入$_COOKIE?
如果这很重要,那就是 EC2 Amazon Linux 实例上的 PHP 5.3.27。
【问题讨论】:
标签: php cookies http-headers