Abrufen der tatsächlichen URL nach dem Dateiabruf mit file_get_contents
Bei Verwendung von file_get_contents() zum Abrufen von Website-Inhalten ist es möglich, dass die bereitgestellte URL umleitet an einen anderen Ort. Obwohl diese Funktion praktisch sein kann, kann sie auch dazu führen, dass die tatsächliche URL ermittelt werden muss, die nach der Umleitung erreicht wird.
Eine Methode, dies zu erreichen, besteht darin, file_get_contents() so zu konfigurieren, dass Weiterleitungen ignoriert werden. So geht's:
$context = stream_context_create(
array(
'http' => array(
'follow_location' => false
)
)
);
$html = file_get_contents('http://www.example.com/', false, $context);
Indem Sie 'follow_location' im Stream-Kontext auf false setzen, ruft file_get_contents() den Inhalt ohne ab automatisch nach Weiterleitungen.
Nachdem die Anfrage gestellt wurde, können die während der HTTP-Antwort zurückgegebenen Header untersucht werden, um die endgültige Antwort zu erhalten URL:
var_dump($http_response_header);
Dadurch wird ein Array mit den HTTP-Headern angezeigt, einschließlich des Headers „Location“, der die tatsächliche URL angibt, die nach etwaigen Weiterleitungen erreicht wurde.
Dieser Ansatz ist inspiriert von der Lösung, die auf Stack Overflow im Thread „Wie ignoriere ich einen verschobenen Header mit file_get_contents in“ bereitgestellt wird? PHP?"
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3