【问题标题】:PHP cURL: Read a specific response headerPHP cURL:读取特定的响应标头
【发布时间】:2014-01-22 19:04:03
【问题描述】:

我在 PHP 中使用 cURL 来 POST 到正在创建资源的端点。它返回一个带有 Location 标头的 201 响应,该标头给出了所创建资源的 URL。我还在响应正文中获得了一些信息。

获取响应的纯文本正文以及获取位置标头的值的最佳方法是什么? curl_getinfo 不返回该标题,当我这样做时:

    curl_setopt($ch, CURLOPT_HEADERFUNCTION, function($ch, $header) {
        var_dump($header);
    });

我只看到一个标头被转储了——“HTTP/1.1 201 Created”响应代码。

【问题讨论】:

    标签: php curl http-headers


    【解决方案1】:
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER,true);
    
    $result = curl_exec($ch);
    
    curl_close($ch);
    
    list($headers, $content) = explode("\r\n\r\n",$result,2);
    
    // Print header
    foreach (explode("\r\n",$headers) as $hdr)
        printf('<p>Header: %s</p>', $hdr);
    
    // Print Content
    echo $content;
    

    【讨论】:

    • 如果\r\n\r\n出现在正文中怎么办?
    • 如果在更广泛的互联网上使用,这有一些可能的陷阱:一些服务器不会使用 /r/n 行尾,有时您的请求将响应 100-continue 请求并具有多个标头部分等
    • 即使认为这是可行的,它也应该被认为是易受攻击的!
    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 2011-12-14
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 2019-04-15
    相关资源
    最近更新 更多