PHP get_headers: siųsti HTTP HEAD užklausą per tarpinį serverį
Perduokite srauto kontekstą tiesiogiai funkcijai get_headers, sąmoningai pasirinkite HEAD ir nuspręskite, ar sekti peradresavimus.
PHP kalboje get_headers() priima srauto kontekstą kaip trečiąjį argumentą. PHP 8 versijoje HTTP URL antraščių patikra gali turėti savo tarpinio serverio konfigūraciją:
$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');
}Tarpinis serveris yra TCP galinis taškas HTTP srauto apvalkalui. Pakeiskite jo pakaitinį mazgą ir prievadą neautentifikuotu kandidatu iš HTTP tarpinių serverių sąrašo šiai viešai HTTP patikrai. request_fulluri pateikia visą paskirties URI HTTP užklausos eilutėje, kaip tikisi daugelis persiunčiančių tarpinių serverių. Šis kontekstas priklauso šiam iškvietimui; jis nekeičia numatytojo konteksto, kurį naudoja kiti URL skaitymai.
Nepaisant funkcijos pavadinimo, numatytasis užklausos metodas yra GET. Aiškus HEAD metodas prašo serverio atsakymo metaduomenų be atitinkamo atsakymo turinio. Serveris gali atmesti HEAD arba jį apdoroti kitaip, todėl sėkminga antraščių patikra neįrodo, kad vėlesnis atsisiuntimas pavyks.
Čia peradresavimų sekimas išjungtas, kad būtų galima ištirti pirmąjį atsakymą. Tada Location antraštė ir peradresavimo būsena yra naudingi rezultatai, o ne nurodymas gauti kitą URL. Jei patikra turėtų sekti peradresavimus, sąmoningai pakeiskite tą politiką ir atsižvelkite į papildomas atsakymo antraštes.
Argumentas false išsaugo indeksuotą antraščių masyvą. Naudokite true, kai asociatyvusis analizavimas yra naudingesnis.