【发布时间】:2018-05-18 17:25:35
【问题描述】:
我正在建立 API 连接,服务器要求调用来自 https 服务器,但我找不到如何使用 https 而不是普通 http 来启动 CURL 调用。
这是我的代码:
$url = 'https://app.webinarjam.com/api/v2/webinar';
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_HEADER, 1);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array("Content-type: application/x-www-form-urlencoded"));
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array("Expect:"));
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array("Accept: application/json" ));
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, 2);
$query = http_build_query($data);
curl_setopt($curlHandle, CURLOPT_POST, true);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $query);
ob_start();
curl_exec($curlHandle);
$content = ob_get_contents();
ob_end_clean();
我只收到 403 Forbidden 响应。
我已确保 api 密钥和 url 端点正确,因此 403 的唯一原因是调用不是来自 https 站点。
网站托管是共享服务器。
有什么想法吗?
编辑:这是来自 API 文档:
请注意,您需要通过 SSL 连接到我们的服务器 安全连接。非 SSL 连接将被丢弃。
【问题讨论】:
-
您是否在 URL 中指定了 https://? CURL 不知道您与 Web 服务器有什么连接,它也不应该真正关心。
-
最可能的问题是您没有在 URL 前面加上
https://。尝试顶部的$url = preg_replace('/^https?:\/\//', 'https://', $url);以确保 URL 是通过 SSL 连接的。 -
我调用的网址是 https
$url = 'https://app.webinarjam.com/api/v2/webinar'; -
我很确定你弄错了 403 的原因。
标签: php curl https http-status-code-403 php-curl