HTTP bağlamı seçenekleri
HTTP bağlamı seçenekleri — HTTP 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.
-
İ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).