PHP get_headers () gibt verschiedene Header als CURL aus

8

Wie ist es möglich, dass get_headers() möglicherweise ein anderes Ergebnis liefert, als sie von CURL zu bekommen? Hier ist mein Code:

%Vor%

Das ist das Ergebnis:

%Vor%     
Mike 31.08.2012, 07:33
quelle

2 Antworten

6

get_headers führt standardmäßig eine GET-Anfrage durch, während Sie cURL für eine HEAD-Anfrage konfiguriert haben. Beginnen Sie damit, dass Sie die Anfrage identisch mit der von cURL gesendeten Anfrage stellen, indem Sie einen anderen HTTP-Stream-Kontext HEAD für die Anfrage-Methode verwenden.

Auch der Server scheint einen User Agent zu erwarten, also stellen Sie sicher, dass Sie entweder bereitstellen user_agent in php.ini oder füge es dem Stream-Kontext hinzu.

Folgendes sollte funktionieren:

%Vor%

Siehe Ссылка

Beachten Sie, dass stream_context_set_default den globalen Standard-Stream-Kontext ändert, sodass alle Aufrufe von anderen Methoden, die diesen Stream-Wrapper verwenden, HEAD-Anforderungen jetzt ausführen, sobald Sie die oben genannten aufgerufen haben. Anders als beispielsweise erlaubt file_get_contents , get_headers nicht, einen benutzerdefinierten Stream-Kontext über Argumente an die Funktion zu liefern. Mit anderen Worten, stellen Sie sicher, dass Sie die Methode zurück in GET ändern, nachdem Sie die Header erhalten haben.

    
Gordon 31.08.2012, 07:49
quelle
4

Fügen Sie vor get_headers:

einen anderen User-Agent-Header hinzu %Vor%

Und, könnte HEAD auch angeben, da Sie nur Header wollen. Mit dieser Änderung erhalten Sie die richtigen Header.

AUSGABE

%Vor%     
sberry 31.08.2012 07:54
quelle

Tags und Links