Kun curl-testi tulostaa HTTP-tilaksi 000, se ei ole saanut lopullista HTTP-vastauskoodia raportoitavaksi. Sivusto ei lähettänyt oikeaa HTTP-tilaa nimeltä 000.

Tallenna myös virhe

Tämä POSIX-komentotulkin esimerkki tulostaa lopullisen HTTP-kentän, CONNECT-kentän ja curl-prosessin paluuarvon:

curl --proxy http://203.0.113.10:8080 --noproxy '' --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect}\n' https://example.com/
result=$?
printf 'curl_exit=%s\n' "$result"

Korvaa esimerkin päätepiste omalla HTTP-välityspalvelimellasi tai HTTP-välityspalvelinluettelon ehdokkaalla. Pidä show-error käytössä: virheilmoitus on usein hyödyllisin osa. CONNECT-kenttä on olennainen tunnelia käytettäessä; se ei ole sivuston toinen lopullinen tilakoodi.

Lue arvot yhdessä

  • Epäonnistunut yhteys välityspalvelimeen voi jättää HTTP-kentän arvoon 000.
  • Aikakatkaisu ennen vastauksen vastaanottamista voi aiheuttaa saman.
  • Onnistunutta CONNECT-vastausta seuraava TLS-virhe voi tuottaa arvot connect=200 ja http=000.
  • Valmis sivuston vastaus, kuten 403, on eri asia: silloin tutkittavana on oikea HTTP-vastaus.

Tarkka paluuarvo ja ilmoitus rajaavat syytä. Tarkista, tapahtuiko virhe välityspalvelinta etsittäessä, sen porttiin yhdistettäessä, tunnelia neuvoteltaessa vai kohdetta varmennettaessa.

Älä pelkistä jokaista tulosta tilakoodin tarkistukseksi

Vain http_code-kentän tallentava komentosarja hukkaa siirtovirheen. Tallenna myös prosessin tulos ja virheilmoitus, josta arkaluonteiset tiedot on poistettu. Toisaalta curl voi suorittaa siirron onnistuneesti, vaikka sivusto palauttaisi virhetilan, ellet käytä sopivaa fail-valitsinta. HTTP-vastaus ja asiakasohjelman suoritustulos vastaavat eri kysymyksiin.

Älä yritä korjata arvoa 000 poistamalla TLS-varmennusta käytöstä tai lisäämällä satunnaista otsaketta. Selvitä ensin, mikä toiminto ei koskaan päässyt lopulliseen vastaukseen asti.

Aiheeseen liittyvät artikkelit