PHP get_headers: wysyłanie żądania HTTP HEAD przez proxy
Przekaż kontekst strumienia bezpośrednio do get_headers, świadomie wybierz HEAD i zdecyduj, czy podążać za przekierowaniami.
W PHP get_headers() przyjmuje kontekst strumienia jako trzeci argument. W PHP 8 sprawdzanie nagłówków dla adresu HTTP może nieść własną konfigurację proxy:
$context = stream_context_create([
'http' => [
'proxy' => 'tcp://proxy.example.net:8080',
'request_fulluri' => true,
'method' => 'HEAD',
'follow_location' => 0,
'timeout' => 10,
],
]);
$headers = get_headers('http://example.net/file.zip', false, $context);
if ($headers === false) {
throw new RuntimeException('Header request failed');
}Proxy to punkt końcowy TCP dla opakowania strumienia HTTP. Zastąp zastępczy host i port nieuwierzytelnionym kandydatem z listy proxy HTTP do tego publicznego sprawdzenia HTTP. request_fulluri dostarcza pełny URI miejsca docelowego w wierszu żądania HTTP, jak oczekuje wiele proxy przekazujących. Ten kontekst należy do tego wywołania; nie zmienia kontekstu domyślnego używanego przez inne odczyty URL.
Mimo nazwy funkcji jej domyślną metodą żądania jest GET. Jawna metoda HEAD prosi serwer o metadane odpowiedzi bez odpowiadającego jej ciała odpowiedzi. Serwer może odrzucić HEAD lub obsłużyć go inaczej, więc udane sprawdzenie nagłówków nie dowodzi, że późniejsze pobieranie się powiedzie.
Tutaj podążanie za przekierowaniami jest wyłączone, aby zbadać pierwszą odpowiedź. Nagłówek Location i status przekierowania są wtedy użytecznymi wynikami, a nie instrukcją pobrania innego adresu URL. Jeśli sprawdzenie ma podążać za przekierowaniami, zmień tę politykę świadomie i uwzględnij dodatkowe nagłówki odpowiedzi.
Argument false zachowuje indeksowaną tablicę nagłówków. Użyj true, gdy analiza asocjacyjna jest bardziej przydatna.