curl --resolve tampaknya tidak melakukan apa-apa

35

The --helpoutput untuk ikal berisi daftar --resolvepilihan, yang menyatakan

--resolve <host:port:address> Force resolve of HOST:PORT to ADDRESS

Tapi aku tidak beruntung berhasil. Perintah dasar yang saya coba jalankan adalah

curl --resolve foo.example.com:443:localhost https://foo.example.com:443/

dan saya terus mendapat tanggapan Couldn't resolve host 'foo.example.com'. Saya ingin melakukan ini karena saya sedang menguji sertifikat untuk foo.example.com, tapi saya tidak mengujinya di server yang sebenarnya. Sebagai gantinya, saya mengujinya pada mesin boneka. Saya tahu bahwa saya dapat mengedit /etc/hostssehingga foo.example.com memutuskan ke localhost, tetapi pendekatan ikal ini sepertinya merupakan cara yang "benar" untuk dilakukan, jika saya dapat membuatnya berfungsi.

Adakah yang melihat kesalahan saya di sini?

tsuraan
sumber

Jawaban:

58

Tampaknya address perlu alamat IP numerik, bukan nama host.

Coba ini:

curl --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/
Keith Thompson
sumber
Ini masuk akal karena di dunia DNS, resolveberarti "dapatkan alamat IP dari nama".
vastlysuperiorman
4

Beberapa bantuan tambahan dalam pemecahan masalah:

Pastikan Anda mendengarkan port yang tepat untuk protokol: http = 80; https = 443 & dll

Curl -v juga akan memberikan informasi HEADER untuk server respons yang dapat membantu.

curl -v --resolve foo.example.com:443:127.0.0.1 https://foo.example.com:443/
## The client request headers prepended by >
> OPTIONS /v1/..
> HOSTS foo.example.com
## The server response prepended by <
< HTTP/1.1 501 Not Implemented
## The html returned
<H1>Unsupported Request</H1>

Pada dasarnya dalam hal ini metode HTTP OPSI tidak diterapkan di server tepi untuk CDN.

Manchego
sumber