在HTTP响应头中阅读Set-Cookie指令

3
在PHP中,是否存在标准方法可以在不手动解析的情况下读取HTTP响应头中的“Set-Cookie”指令? 更具体地说,我想读取由我正在使用的ASP.NET Web服务返回的“ASP.NET_SessionId” cookie的值。
编辑:我正在使用PHP的本机SoapClient类来使用Web服务。 我可以使用“__getLastResponseHeaders()”方法检索Web服务返回的整个HTTP响应头。
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
Set-Cookie: ASP.NET_SessionId=ku501l55o300ik3sa2gu3vzj; path=/; HttpOnly
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Tue, 11 Jan 2011 23:34:02 GMT
Content-Length: 368

但是我希望提取ASP.NET_SessionID cookie的值:

ku501l55o300ik3sa2gu3vzj

当然,我不想手动完成这个任务。
2个回答

2

试试这个:

$_COOKIE['ASP.NET_SessionId'];

或者是这个:
$cookies = getCookies();
$sessionId = $cookies['ASP.NET_SessionId'];

不确定最后一部分是否能正常工作 - 如果不能,请尝试以下方法:

print_r($cookies);

查看是否返回任何内容。


不,它不起作用。我想 $_COOKIE 只包含从用户那里读取的 cookie,而不包括 Web 服务返回的 cookie。 - isekaijin
@Eduardo León PHP什么时候不在服务器端? - alex
只要在放置cookie时正确设置了cookie域和路径,它就应该是可读的。 - Jeremy Vanderburg
@alex:从用户的角度来看,PHP是在服务器端执行的,但从我正在使用的Web服务的角度来看,它是在客户端执行的。 - isekaijin
啊...我以前从未使用过PHP的soapclient。我查看的文档不清楚,但可能是针对不同的SOAP客户端。 - Jeremy Vanderburg
显示剩余2条评论

1

您可以通过使用以下方式查看由SOAP客户端返回的cookie:

var_dump($client->_cookies);

echo "cookie is ".$client->_cookies["ASP.NET_SessionId"][0];

这个运行良好。但是我在php文档中找不到任何信息。你在哪里找到的? - jaydoubleyou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接