【问题标题】:PHP cURL Put, no permission (403 forbidden)PHP cURL Put,没有权限(403 禁止)
【发布时间】:2017-01-04 22:30:15
【问题描述】:

我制作了一个使用 Mobile.de API 的脚本。 它在他们的测试环境中运行良好,与实时环境的唯一区别是代理。所以在我的 cURL 中我删除了代理。 对于任何 POST 调用,这都很好,但对于我的 PUT 调用,它根本不起作用。

假设我用 Postman 发送了以下内容:

PUT /seller-api/sellers/123/ads/456
主机:services.mobile.de
内容类型:application/vnd.de.mobile.api+json
授权:基本 abcdef12345=

我输入了正确的 JSON,它工作得很好。
这是我在 PHP 中使用的脚本:

function updateVehicle($seller, $voertuig_id, $json) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://services.mobile.de/seller-api/sellers/' . $seller . '/ads/' . $voertuig_id);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
    curl_setopt($ch, CURLOPT_USERPWD, USERNAME . ':' . PASSWORD);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Host: services.mobile.de',
        'Content-type: application/vnd.de.mobile.api+json'
    ));

    $output = curl_exec($ch);

    curl_close($ch);

    return $output;
}

作为回报,我得到了 403 禁止。 '您无权访问此服务器上的 /seller-api/sellers/123/ads/456。'

我已经打印出了 al curl 信息,看到所有的标题都在那里,一切看起来都很好,但是为什么我没有权限。

已联系 Mobile.de,但他们说这是我的代码中的内容。

【问题讨论】:

  • 您可以尝试将其添加到您的 curl 请求中吗:curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  • 不起作用。如果我将其设为 POST,则效果很好。标题似乎也很好。

标签: php api curl


【解决方案1】:

所以经过多次调试后,我发现是 $voertuig_id 后面的空格导致了 403 禁止错误。 :S

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 2020-09-07
    • 2013-05-30
    • 1970-01-01
    • 2014-10-31
    • 2015-04-19
    • 1970-01-01
    相关资源
    最近更新 更多