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
).