【问题标题】:HTTP request with PHP CURL and getting different result from postman and curl cli使用 PHP CURL 的 HTTP 请求并从邮递员和 curl cli 获得不同的结果
【发布时间】:2019-07-06 13:12:19
【问题描述】:

我正在尝试使用以下代码在 php 中使用 curl 发出 GET 请求。

test.php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://apiaddress/collection',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => array(
        'Authorization: Bearer 374dad6fdc005a0f17c49aeg77rbifuy48t7205hfhf7he8857c'
    ),
    CURLINFO_HEADER_OUT => true
));

$response = curl_exec($curl);
$err = curl_error($curl);

$info = curl_getinfo($curl, CURLINFO_HEADER_OUT);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo "Response code: " . $httpCode . "\nResponse body: \n" . $response . "\n";
}


curl_close($curl);
echo $info;

此请求在 Postman 中有效,并使用此 curl 命令 curl -X GET \ https://apiaddress/collection -H 'Authorization: Bearer 374dad6fdc005a0f17c49aeg77rbifuy48t7205hfhf7he8857c' 有效,但是当我在 cli 中运行 php test.php 时,我得到此输出。我猜我缺少标头或在某处发送了不正确的标头?

响应码:401

响应正文:

{"type":"https://apiaddress/errors#error-unauthorized","title":"Unauthorized","detail":"No 提供的授权凭证。您必须提供授权 此请求的令牌。","status":401}

GET /collection HTTP/2

主机:apiaddress

接受:*/*

授权:承载 374dad6fdc005a0f17c49aeg77rbifuy48t7205hfhf7he8857c

【问题讨论】:

  • $info 包含什么?
  • $info 是上面以 GET 开头的输出
  • 我也怀疑这是标题的问题,为什么不比较两者呢?您可能需要在 PHP 请求中指定 Content-Type

标签: php curl


【解决方案1】:

您似乎在localhost 下运行此程序,您还需要该行:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

这告诉 cURL 不要验证您的 SSL 证书。

或者,如果您确实有 .pem 证书文件,您可以使用:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($curl, CURLOPT_CAINFO, "/path/to/cacert.pem");

【讨论】:

  • 我设置了那个标志,但它仍然不起作用。我还在安装了 php 和 php-curl 的 apache 服务器上托管了 test.php 文件,并且发生了同样的事情。
【解决方案2】:

事实证明,这个 API 需要 User-Agent 标头,而且似乎 Postman 和 curl cli 会自动发送这些标头,而 php-curl 请求则不需要。一旦我添加了该标题并组成了一个值,它就开始工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 2016-06-26
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多