PHP cURL -välityspalvelimen otsikot: CONNECT vastaan kohdekohteen vastaukset
Pidä CONNECT-, todennus-, uudelleenohjaus- ja lopullisen vastauksen otsikot erillään, kun PHP cURL -siirto käyttää välityspalvelinta.
Kerää otsikkorivit erilleen vastauksen rungosta. Välityspalvelimen kautta kulkeva siirto voi toimittaa CONNECT-, todennus-, uudelleenohjaus- ja kohdevastauksen otsikot yhdessä toiminnossa:
$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
function ($handle, $line) use (&$headerLines) {
$headerLines[] = $line;
return strlen($line);
}
);
Tämä takaisinkutsu säilyttää raa'an rivijärjestyksen ja palauttaa hyväksyttyjen tavujen määrän. Se vastaanottaa kokonaisia rivejä; mutta ei vielä ryhmittele niitä vastauksiksi eikä valitse lopullisen verkkosivuston otsikoita.
Tulkitse järjestys lohkoina
HTTP-tilarivi aloittaa vastauslohkon ja tyhjä rivi päättää sen otsikot. Säilytä nämä rajat ennen lopullisen kohdevastauksen valintaa. Väliaikaiset todennusyritykset ja uudelleenohjaukset voivat kukin lisätä lohkoja.
Trailerit voivat saapua myöhemmin takaisinkutsun kautta. Pidä riittävästi jäsentimen tilaa niiden erottamiseksi alkuperäisistä otsikoista sen sijaan, että liittäisit jokaisen myöhemmän kentän ensimmäiseen vastaukseen.
Säilytä tai vaienna tunnelin todiste
Lue CURLINFO_HTTP_CONNECTCODE erikseen HTTPS-tunnelin CONNECT-tilaa varten. Hyväksytty tunneli ei todista onnistunutta verkkosivuston vastausta.
Jos kerääjä ei tarvitse CONNECT-otsikoita, CURLOPT_SUPPRESS_CONNECT_HEADERS ohjaa niiden toimituksen määritettyyn otsikkotulosteeseen ja takaisinkutsupolkuihin. Tarkista tuki linkitetyssä libcurlissa ja PHP-koonnissa. Vaientaminen yksinkertaistaa keruuta mutta poistaa otsikkotason tunnelitodisteen, joka voi auttaa diagnoosissa.
Älä palauta runkoa kiinteällä siirtymällä tai etsimällä HTML-tunnistetta. Otsikoiden koot vaihtelevat, välivastaukset eroavat ja runko voi olla binaarinen tai tyhjä. Vanha versiokohtainen virheraportti ei oikeuta arvattua siirtymää.
Pidä rungon käsittely erillään ja säilytä siirtovirhe havaittujen vastausvaiheiden kanssa, jos keruu tai jäsennys epäonnistuu. Se erottaa keskeytyneen takaisinkutsun, virheelliset sovellustiedot ja hylätyn välityspalvelinvaihdon.