curl --resolve dường như không làm gì cả


35

Đầu --helpra cho curl liệt kê một --resolvetùy chọn, trong đó nêu rõ

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

Tôi không có bất kỳ may mắn để làm cho nó làm việc mặc dù. Lệnh cơ bản tôi đang cố chạy là

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

và tôi tiếp tục nhận được phản hồi Couldn't resolve host 'foo.example.com'. Tôi muốn làm điều này bởi vì tôi đang thử nghiệm một chứng chỉ cho foo.example.com, nhưng tôi không thử nghiệm nó trên máy chủ thực tế. Thay vào đó, tôi đang thử nghiệm nó trên một máy giả. Tôi biết rằng tôi có thể chỉnh sửa /etc/hostsđể foo.example.com phân giải thành localhost, nhưng cách tiếp cận cuộn tròn này có vẻ như sẽ là cách "chính xác", nếu tôi có thể làm cho nó hoạt động.

Có ai thấy những gì tôi đang làm sai ở đây?

Câu trả lời:


58

Dường như addresscần phải là một địa chỉ IP số, không phải là tên máy chủ.

Thử đi:

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

Điều này có ý nghĩa bởi vì trong thế giới DNS, resolvecó nghĩa là "lấy địa chỉ IP từ tên".
differlysuperiorman

4

Một số trợ giúp bổ sung trong khắc phục sự cố:

Đảm bảo bạn đang nghe đúng cổng cho giao thức: http = 80; https = 443 & v.v.

Ngoài ra curl -v sẽ cung cấp thông tin CHÍNH cho máy chủ phản hồi có thể hữu ích.

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>

Về cơ bản trong trường hợp này, phương thức HTTP TÙY CHỌN không được triển khai tại máy chủ biên cho CDN.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.