PHP get_headers: eine HTTP-HEAD-Anfrage über einen Proxy senden
Übergeben Sie einen Stream-Kontext direkt an get_headers, wählen Sie HEAD bewusst und entscheiden Sie, ob Weiterleitungen gefolgt werden soll.
In PHP akzeptiert get_headers() einen Stream-Kontext als drittes Argument. Unter PHP 8 kann eine Header-Prüfung für eine HTTP-URL ihre eigene Proxy-Konfiguration mitbringen:
$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');
}Der Proxy ist ein TCP-Endpunkt für den HTTP-Stream-Wrapper. Ersetzen Sie Platzhalter-Host und -Port durch einen nicht authentifizierten Kandidaten aus der HTTP-Proxy-Liste für diese öffentliche HTTP-Prüfung. request_fulluri liefert die vollständige Ziel-URI in der HTTP-Anfragezeile, wie viele Forward-Proxys es erwarten. Dieser Kontext gehört zu diesem Aufruf; er ändert nicht den Standardkontext, den andere URL-Lesevorgänge verwenden.
Trotz des Funktionsnamens ist die Standard-Anfragemethode GET. Die ausdrückliche HEAD-Methode fordert vom Server Antwort-Metadaten ohne den zugehörigen Antworttext an. Ein Server kann HEAD ablehnen oder anders behandeln, daher ist eine erfolgreiche Header-Prüfung kein Beweis dafür, dass ein späterer Download gelingt.
Hier ist das Folgen von Weiterleitungen deaktiviert, um die erste Antwort zu untersuchen. Ein Location-Header und ein Weiterleitungsstatus sind dann nützliche Ergebnisse statt einer Anweisung, eine andere URL abzurufen. Soll die Prüfung Weiterleitungen folgen, ändern Sie diese Richtlinie bewusst und berücksichtigen Sie die zusätzlichen Antwort-Header.
Das Argument false behält ein indexiertes Header-Array. Verwenden Sie true, wenn assoziatives Parsen nützlicher ist.