Apabila ujian curl memaparkan 000 sebagai status HTTP, curl belum memperoleh kod respons HTTP akhir untuk dilaporkan. Laman web tidak menghantar status HTTP sebenar bernama 000.

Rekodkan ralat juga

Contoh untuk shell POSIX ini mencetak medan HTTP akhir, medan CONNECT dan kod keluar proses curl:

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"

Gantikan titik akhir contoh dengan proksi HTTP anda atau calon daripada senarai proksi HTTP. Biarkan show-error diaktifkan: mesej ralat selalunya bahagian yang paling berguna. Medan CONNECT berkaitan apabila terowong digunakan; ia bukan status akhir kedua daripada laman web.

Baca nilai secara bersama

  • Kegagalan menyambung ke proksi boleh menyebabkan medan HTTP kekal pada 000.
  • Tamat masa sebelum respons diterima boleh memberikan hasil yang sama.
  • Respons CONNECT yang berjaya diikuti kegagalan TLS boleh memaparkan connect=200 dan http=000.
  • Respons laman web yang lengkap seperti 403 berbeza: terdapat respons HTTP sebenar untuk diperiksa.

Kod keluar yang tepat dan mesejnya mengecilkan skop punca. Periksa sama ada kegagalan berlaku ketika mencari proksi, menyambung ke portnya, merundingkan terowong atau mengesahkan destinasi.

Jangan ringkaskan setiap hasil kepada semakan status sahaja

Skrip yang hanya menyimpan http_code membuang ralat pengangkutan data. Simpan juga hasil proses dan mesej ralat yang telah dibersihkan daripada maklumat sensitif. Sebaliknya, curl boleh melengkapkan pemindahan dengan jayanya walaupun laman web mengembalikan status ralat, melainkan anda menggunakan pilihan fail yang sesuai. Respons HTTP dan hasil pelaksanaan klien menjawab soalan yang berbeza.

Jangan cuba membaiki 000 dengan mematikan pengesahan TLS atau menambah pengepala secara rawak. Kenal pasti dahulu operasi yang tidak pernah mencapai respons akhir.

Artikel berkaitan