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);
    }

}

?>

Примечания

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

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

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

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

Коментарии

As it says on this page:

"The stream allows access to the body of the resource; the headers are stored in the $http_response_header variable. Since PHP 4.3.0, the headers are available using stream_get_meta_data()."

This one sentence is the only documentation I have found on the mysterious $http_response_header variable, and I'm afraid it's misleading.  It implies that from 4.3.0 onward, stream_get_meta_data() ought to be used in favor of $http_response_header. 

Don't be fooled!  stream_get_meta_data() requires a stream reference, which makes it ONLY useful with fopen() and related functions.  However, $http_response_header can be used to get the headers from the much simpler file_get_contents() and related functions, which makes it still very useful in 5.x.

Also note that even when file_get_contents() and friends fail due to a 4xx or 5xx error and return false, the headers are still available in $http_response_header.
2006-11-17 02:18:39
http://php5.kiev.ua/manual/ru/wrappers.http.html
HTTP post function;

<?php
function post_it($datastream$url) { 

$url preg_replace("@^http://@i"""$url);
$host substr($url0strpos($url"/"));
$uri strstr($url"/"); 

     
$reqbody "";
      foreach(
$datastream as $key=>$val) {
          if (!empty(
$reqbody)) $reqbody.= "&";
     
$reqbody.= $key."=".urlencode($val);
      } 

$contentlength strlen($reqbody);
     
$reqheader "POST $uri HTTP/1.1\r\n".
                   
"Host: $host\n""User-Agent: PostIt\r\n".
     
"Content-Type: application/x-www-form-urlencoded\r\n".
     
"Content-Length: $contentlength\r\n\r\n".
     
"$reqbody\r\n"

$socket fsockopen($host80$errno$errstr);

if (!
$socket) {
   
$result["errno"] = $errno;
   
$result["errstr"] = $errstr;
   return 
$result;
}

fputs($socket$reqheader);

while (!
feof($socket)) {
   
$result[] = fgets($socket4096);
}

fclose($socket);

return 
$result;
}
?>
2007-07-29 19:06:50
http://php5.kiev.ua/manual/ru/wrappers.http.html
Автор:
Passing authentication information in the URL as in "https://user:password@example.com" works for HTTP "Basic" access authentication but not for HTTP "Digest" access authentication. You can use the cURL functions for servers requesting HTTP "Digest" access authentication.
2015-11-09 18:27:03
http://php5.kiev.ua/manual/ru/wrappers.http.html

    Поддержать сайт на родительском проекте КГБ