HTTP bağlamı seçenekleri

HTTP bağlamı seçenekleriHTTP bağlamı seçeneklerinin listesi

Açıklama

http:// ve https:// aktarımları için bağlam seçenekleri.

Seçenekler

method string

Uzak sunucu tarafından desteklenen GET, POST veya başka bir HTTP yöntemi.

GET öntanımlıdır.

header array veya string

İstek sırasında gönderilecek ek başlıklar. Bu seçenekte belirtilen değerler, ardından gelen Location: yönlendirmelerinde bile, diğer değerleri geçersiz kılar (User-agent:, Host:, Authentication: gibi). Bu bakımdan, follow_location etkinken Host: başlığının atanması önerilmez.

user_agent string

User-Agent: başlığı ile gönderilecek değer. Bu değer sadece, tarayıcı header seçeneği ile belirtilmemişse kullanılır.

Öntanımlı olarak, php.ini dosyasındaki user_agent değeri kullanılır.

content string

Başlıklardan sonra gönderilecek ek veri. Normalde POST veya PUT istekleriyle kullanılır.

proxy string

Vekil sunucunun adresini belirten URI (tcp://vekil.example.com:5100 gibi).

request_fulluri bool

true atanırsa, istek oluşturulurken URI'nin tamamı kullanılır (GET http://example.com/dizin/yolu/dosya.html HTTP/1.0 gibi). Bu standart dışı bir istek biçimi olsa da bazı vekil sunucular bunun böyle olmasını gerektirirler.

false öntanımlıdır.

follow_location int

Location başlık yönlendirmelerini izler. İptal etmek için 0 atayın.

1 öntanımlıdır.

max_redirects int

İzlenecek yönlendirmelerin azami sayısı. 1 veya daha az bir değer belirtilmesi hiçbir yönlendirmenin izlenmeyeceği anlamına gelir.

20 öntanımlıdır.

protocol_version float

HTTP protokolünün sürümü.

PHP 8.0.0 itibariyle 1.1 öntanımlıdır, evvelce 1.0 sürümü öntanımlıydı.

timeout float

Bir float değer olarak saniye cinsinden okuma zaman aşımı. (10.5 gibi).

Öntanımlı olarak, php.ini dosyasındaki default_socket_timeout yönergesinin değeri kullanılır.

ignore_errors bool

Başarısızlık durumu kodlarında bile içerik alınır.

false öntanımlıdır.

Örnekler

Örnek 1 - Bir sayfayı çekip veriyi POST ile göndermek

<?php

$postverisi
= http_build_query(
array(
'var1' => 'biraz içerik',
'var2' => 'eh işte'
)
);

$seçenekler = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postverisi
)
);

$bağlam = stream_context_create($seçenekler);

$sonuç = file_get_contents('http://example.com/submit.php', false, $bağlam);

?>

Örnek 2 - Başlıklar ve içerik alınırken yönlendirmeleri yoksaymak

<?php

$url
= "http://www.example.org/header.php";

$opts = array('http' =>
array(
'method' => 'GET',
'max_redirects' => '0',
'ignore_errors' => '1'
)
);

$context = stream_context_create($opts);
$stream = fopen($url, 'r', false, $context);

// meta veri ve başlıklar
var_dump(stream_get_meta_data($stream));

// esas veri
var_dump(stream_get_contents($stream));
fclose($stream);
?>

Notlar

Bilginize: Temel soket akımı bağlamı seçenekleri
Ek bağlamsal seçenekler temel aktarım tarafından desteklenebilir. http:// akımları için tcp:// aktarımının bağlamsal seçeneklerine atıf yapılır. https:// akımları için ise ssl:// aktarımının bağlamsal seçeneklerine atıf yapılır.

Bilginize: HTTP durum satırı
Bu akım sarmalayıcı bir yönlendirmeyi izlerken stream_get_meta_data() tarafından döndürülen wrapper_data, gerçekte 0 indisinde içerik verisine uygulanan HTTP durum satırını içermeyebilir.

array (
  'wrapper_data' =>
  array (
    0 => 'HTTP/1.0 301 Moved Permantenly',
    1 => 'Cache-Control: no-cache',
    2 => 'Connection: close',
    3 => 'Location: http://example.com/foo.jpg',
    4 => 'HTTP/1.1 200 OK',
    ...
İlk istek 301 (kalıcı yönlendirme) ile döndü, dolayısıyla akım sarmalayıcı otomatik olarak yönlendirmeyi izleyip bir 200 yanıtı aldı (indis = 4).