Kai curl bandymas kaip HTTP būseną išveda 000, jis negavo galutinio HTTP atsakymo kodo, kurį galėtų pateikti. Svetainė neatsiuntė tikros HTTP būsenos pavadinimu 000.

Užfiksuokite ir klaidą

Šis POSIX apvalkalo pavyzdys išveda galutinį HTTP lauką, CONNECT lauką ir curl proceso išėjimo kodą:

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"

Pavyzdinį galinį tašką pakeiskite savo HTTP tarpiniu serveriu arba kandidatu iš HTTP tarpinių serverių sąrašo. Palikite show-error įjungtą: klaidos pranešimas dažnai yra naudingiausia dalis. CONNECT laukas svarbus naudojant tunelį; tai nėra antra galutinė svetainės būsena.

Reikšmes skaitykite kartu

  • Nepavykus prisijungti prie tarpinio serverio HTTP laukas gali likti 000.
  • Skirtojo laiko pabaiga prieš gaunant atsakymą gali duoti tokį pat rezultatą.
  • Po sėkmingo CONNECT atsakymo įvykusi TLS klaida gali pateikti connect=200 ir http=000.
  • Visas svetainės atsakymas, pavyzdžiui, 403, yra kitas atvejis: yra tikras HTTP atsakymas, kurį galima tirti.

Tikslus išėjimo kodas ir pranešimas susiaurina priežasčių paiešką. Patikrinkite, ar klaida įvyko ieškant tarpinio serverio, jungiantis prie jo prievado, derantis dėl tunelio ar tikrinant paskirties vietą.

Nesuveskite kiekvieno rezultato vien į būsenos tikrinimą

Scenarijus, kuris išsaugo tik http_code, praranda perdavimo klaidą. Išsaugokite ir proceso rezultatą bei klaidos pranešimą be jautrių duomenų. Ir atvirkščiai: curl gali sėkmingai užbaigti perdavimą, nors svetainė grąžina klaidos būseną, jei nenaudojate tinkamos fail parinkties. HTTP atsakymas ir kliento vykdymo rezultatas atsako į skirtingus klausimus.

Nemėginkite taisyti 000 išjungdami TLS tikrinimą ar pridėdami atsitiktinę antraštę. Pirmiausia nustatykite, kuri operacija nepasiekė galutinio atsakymo.

Susiję straipsniai