Инициировать завиток с https

Я устанавливаю соединение через API, и сервер требует, чтобы вызов выполнялся с сервера https, но я не могу найти, как инициировать вызов CURL с использованием https вместо обычного http.

это мой код:

$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:

Please note that you’re required to connect to our server from a SSL secure connection. Non SSL connections will be dropped.

Вы указали https: // в URL-адресе? CURL не знает, какое у вас соединение с веб-сервером, и это не должно волновать.

Devon 18.05.2018 19:28

Наиболее вероятная проблема заключается в том, что вы не указали перед URL-адресом https://. Попробуйте $url = preg_replace('/^https?:///', 'https://', $url); вверху, чтобы убедиться, что URL-адрес подключается через SSL.

B. Fleming 18.05.2018 19:32

URL, по которому я звоню, - https $url = 'https://app.webinarjam.com/api/v2/webinar';

Abraham Romero 18.05.2018 20:00

Я почти уверен, что вы ошибаетесь в причине 403-го.

Devon 18.05.2018 20:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
196
1

Ответы 1

Причина, по которой CURLOPT_HTTPHEADER принимает массив в качестве аргумента, заключается в том, что вы можете указать несколько заголовков одновременно. Я думаю, что это может быть проблемой, поскольку последний может перекрывать предыдущие.

$headers    =   [];
$headers[]  =   "Content-type: application/x-www-form-urlencoded";
$headers[]  =   "Except: ";
$headers[]  =   "Accept: application/json";

$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, $headers);
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();

Другие вопросы по теме