Intereting Posts
Facebook PHP SDK 5 :: API 2.4 :: Ошибка проверки подделки на основе межсайтового запроса. Обязательное состояние «состояние» отсутствует ajax submit form, почему он не может эхо $ _POST Изменение почтового отправителя phpmailer Отображение пользовательских данных продукта в представлении «Элементы заказа» DW-CS5: запуск приложений Facebook на локальном сервере Как определить HTTP-метод в CodeIgniter PHP XML DOM Исключить исключение «DOMException» с сообщением «Ошибка неправильного документа» Расширение Google и PHP как добавлять данные в существующий массив без перезаписи всего массива Расширитель Codeigniter расширенный MY_Controller Как отобразить строку таблицы mysql как столбец Ошибка при обработке аутентификации OAuth2 Когда я использую if / endif против If {}? Результаты Weird MYSQL с использованием PDO :: FETCH_ASSOC без псевдонима столбца Внутренняя ошибка Apache 500 при ошибках синтаксиса PHP (htaccess)

PHP cURL: как подключиться через HTTPS?

Мне нужно сделать простой запрос GET для API запросов EC2 с обычной строкой запроса URL-адреса. Протокол HTTPS. Как отправить запрос с помощью PHP cURL.

Пример:

$url = "https://example.com"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); $result = curl_exec($ch); curl_close($ch); print_r($result); 

CURLOPT_SSL_VERIFYPEER

Проверьте, является ли сертификат одноранговой сети действительным или недействительным / истек.

CURLOPT_SSL_VERIFYHOST цитирование из руководства php :

1, чтобы проверить наличие общего имени в SSL-сертификате. 2, чтобы проверить наличие общего имени, а также убедиться, что он соответствует указанному имени хоста.

Отправка запроса через curl на HTTPS-URL не так уж сложна с точки зрения кода PHP.

Что-то вроде этого должно отлично работать (я просто пробовал эту часть кода на своей машине, Windows, PHP 5.3) :

 $url = 'https://.../...'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); curl_close($ch); echo $data; 

И он выводит результат отлично: то же самое, что я получаю в своем браузере при попытке получить доступ к URL https:// ; за исключением CSS, конечно.

Вы можете взглянуть на страницу curl_setopt функции curl_setopt : есть много вариантов, и некоторые из них могут быть полезны в вашем конкретном случае 🙂

Здесь я использовал CURLOPT_SSL_VERIFYPEER и CURLOPT_SSL_VERIFYHOST ; не уверен, что вам понадобятся те, у кого есть Amazon, но я должен был их использовать, иначе эта часть кода не сработала, но это может быть связано с тем, что сертификат, который я использую, сам по себе … Попробуйте с ними и без них, и вы быстро узнаете, нужны ли они вам.

Если вы хотите настроить CURL для слепого принятия сертификата, вы можете установить для параметра CURLOPT_SSL_VERIFYPEER значение false.

 $url = 'https://www.example.com/abc'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Blindly accept the certificate curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); curl_close($ch); var_dump($response); 

Вы также можете использовать Zend Framework и адаптер cURL, чтобы помочь с этой задачей. Подробнее здесь