curl - แก้ไขดูเหมือนจะไม่ทำอะไรเลย


35

--helpเอาท์พุทสำหรับขดแสดงรายการ--resolveตัวเลือกซึ่งรัฐ

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

ฉันไม่มีโชคใด ๆ เลยที่จะให้มันทำงาน คำสั่งพื้นฐานที่ฉันพยายามเรียกใช้คือ

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

Couldn't resolve host 'foo.example.com'และฉันให้ได้รับการตอบสนอง ฉันต้องการทำเช่นนี้เพราะฉันกำลังทดสอบใบรับรองสำหรับ foo.example.com แต่ฉันไม่ได้ทดสอบบนเซิร์ฟเวอร์จริง แต่ฉันกำลังทดสอบบนเครื่องจำลอง ฉันรู้ว่าฉันสามารถแก้ไข/etc/hostsเพื่อให้ foo.example.com แก้ไขเป็น localhost แต่วิธีการแบบม้วนนี้ดูเหมือนว่าจะเป็นวิธีที่ "ถูกต้อง" หากฉันสามารถทำให้มันใช้งานได้

มีใครเห็นสิ่งที่ฉันทำผิดที่นี่หรือไม่

คำตอบ:


57

ปรากฏว่าaddressจำเป็นต้องเป็นที่อยู่ IP ที่เป็นตัวเลขไม่ใช่ชื่อโฮสต์

ลองสิ่งนี้:

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

เรื่องนี้สมเหตุสมผลเพราะในโลก DNS resolveหมายถึง "รับที่อยู่ IP จากชื่อ"
vastlysuperiorman

4

ความช่วยเหลือเพิ่มเติมบางประการในการแก้ปัญหา:

ตรวจสอบให้แน่ใจว่าคุณกำลังฟังพอร์ตที่ถูกต้องสำหรับโปรโตคอล: http = 80; https = 443 & ฯลฯ

นอกจากนี้ curl -v จะให้ข้อมูล HEADER สำหรับเซิร์ฟเวอร์การตอบกลับซึ่งมีประโยชน์

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>

โดยทั่วไปในกรณีนี้วิธีการ OPTIONS HTTP ไม่ได้ถูกนำไปใช้ที่เซิร์ฟเวอร์ขอบสำหรับ CDN

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.