http://

https://

http:// -- https://Доступ к URL-адресам по протоколу HTTP(s)

Описание

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

Этот поток также позволяет получить доступ к содержимому ресурса; заголовки сохраняются в переменной $http_response_header.

Если важно знать URL, с которого был получен документ (после всех переадресаций, которые были произведены), то вам необходимо обработать серию заголовков ответов, возвращаемых потоком.

INI-директива from будет использоваться для заголовка From:, если установлена и не переопределена в контексте Контекстные опции и параметры.

Опции

  • http://example.com
  • http://example.com/file.php?var1=val1&var2=val2
  • http://user:password@example.com
  • https://example.com
  • https://example.com/file.php?var1=val1&var2=val2
  • https://user:password@example.com

Опции

Основная информация
Атрибут Поддержка
Ограничение по allow_url_fopen Да
Чтение Да
Запись Нет
Добавление Нет
Одновременное чтение и запись Недоступно
Поддержка stat() Нет
Поддержка unlink() Нет
Поддержка rename() Нет
Поддержка mkdir() Нет
Поддержка rmdir() Нет

Список изменений

Версия Описание
4.3.7 Определение сбойных IIS-серверов для избежания ошибок типа "SSL: Fatal Protocol Error".
4.3.0 Добавлен протокол https://.
4.0.5 Добавлена поддержка переадресаций.

Примеры

Пример #1 Определение URL, с которого был забран документ после переадресаций

<?php
$url 
'http://www.example.com/redirecting_page.php';

$fp fopen($url'r');

$meta_data stream_get_meta_data($fp);
foreach (
$meta_data['wrapper_data'] as $response) {

    
/* Были ли мы переадресованы? */
    
if (strtolower(substr($response010)) == 'location: ') {

        
/* Сохранить в $url адрес, куда нас переадресовали */
        
$url substr($response10);
    }

}

?>

Пример #2 Отправка пользовательских заголовков вместе с HTTP-запросом

Пользовательские заголовки могут быть отправлены с использованием опций контекста . Так же можно использовать следующий трюк: Пользовательские заголовки могут быть отправлены с помощью HTTP-запроса за счет использования побочного эффекта в обработке INI-директивы user_agent. Присвойте директиве user_agent любую правильную строку в качестве значения (например, такую как значение по умолчанию - PHP/версия), с последующими символами возврат каретки/перевод на новую строку (CR/LF) и добавьте любые дополнительные заголовки.

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

$fp fopen('http://www.example.com/index.php''r');
?>

Резултаты предыдущего запроса получаются такие:

GET /index.php HTTP/1.0
Host: www.example.com
User-Agent: PHP
X-MyCustomHeader: Foo

Примечания

Замечание: Протокол HTTPS поддерживается только когда расширение openssl включено.

Соединения HTTP предназначены только для чтения; запись данных или копирование файлов в HTTP-ресурс не поддерживается.

Отправка запросов POST и PUT, например, может быть выполнена с помощью HTTP-контеста.

Смотрите также


Участник рейтинга Тэглайн 2010