【问题标题】:Reading the Set-Cookie instructions in an HTTP Response header读取 HTTP 响应标头中的 Set-Cookie 指令
【发布时间】:2011-06-07 12:29:27
【问题描述】:

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

当然,我不想手动操作。

【问题讨论】:

    标签: php http cookies


    【解决方案1】:

    试试这个:

    $_COOKIE['ASP.NET_SessionId'];
    

    或者这个:

    $cookies = getCookies();
    $sessionId = $cookies['ASP.NET_SessionId'];
    

    不确定最后一部分是否能正常工作 - 如果不能,您可以尝试:

    print_r($cookies);
    

    看看它是否返回任何东西。

    【讨论】:

    • 不,它不起作用。我认为$_COOKIE 仅包含从用户读取的 cookie,而不是 Web 服务返回的 cookie。
    • @Eduardo León PHP什么时候不在在服务器端?
    • 放置cookie时只要正确设置cookie域和路径,应该是可读的。
    • @alex:从用户的角度来看,PHP 位于服务器端,但从我正在使用的 Web 服务的角度来看,PHP 位于客户端。
    • 据我所知,SoapClient 类中有一个 getCookies() 方法。因此,如果您可以调用该方法,您应该能够获取 cookie。检查编辑的答案。
    【解决方案2】:

    您可以使用以下命令查看通过soap客户端返回的cookies:

    var_dump($client->_cookies);

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

    【讨论】:

    • 这很好用。但我在 php 文档中找不到任何内容。你在哪里找到的?
    猜你喜欢
    • 1970-01-01
    • 2014-02-26
    • 2012-09-30
    • 2021-02-03
    • 1970-01-01
    • 2018-11-14
    • 2011-11-04
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多