Как загрузить файл по протоколу https с помощью php


Мне нужно загрузить xml-файл с помощью PHP. Я могу прочитать содержимое файла, установив следующие параметры при вызове curl.

curl_setopt ($http, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($http, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($http,CURLOPT_USERAGENT,'XYZ');

Как видно из приведенного выше фрагмента, мне нужно сделать VERIFYHOST ложным, а также установить явный АГЕНТ пользователя при вызове для чтения файла, потому что файл не является общедоступным, и только определенное приложение может сделать вызов для его чтения (методы веб-безопасности и прочее)

Но как мне загрузить то же самое файл, я пробовал readfile, fopen/fpassthru, file_get_contents но, похоже, ничего не работает. Прочитанный файл выдает ошибку failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

Есть ли способ предоставить варианты, подобные curl, с помощью fopen или readfile, я думаю, что это может быть самым простым подходом к решению этой проблемы. Я не смог найти большой помощи в документации PHP.

Пожалуйста, помогите.

Author: Harshdeep, 2012-07-17

1 answers

Вам необходимо подключить свой специальный агент пользователя к контексту потока.

Из http://www.php.net/manual/en/wrappers.http.php

Разрешает доступ только для чтения к файлам/ресурсам через HTTP 1.0, используя метод HTTP GET. Заголовок Host: отправляется с запросом на обработку виртуальных хостов на основе имен. Если вы настроили строку user_agent с помощью файла php.ini или контекста потока, она также будет включена в запрос.

Пример № 2 по ссылке выше:

<?php
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");

$fp = fopen('http://www.example.com/index.php', 'r');
?>
 3
Author: Mike B, 2012-07-17 19:35:57