curl: (1) Giao thức https không được hỗ trợ hoặc vô hiệu hóa trong libcurl


162

Tôi đang cố gắng cài đặt môi trường Rails trên Ubuntu 11.04. Khi tôi khởi chạy lệnh rvm install 1.9.2 --with-openssl-dir=/usr/local, sẽ nhận được lỗi sau:

curl : (1) Protocol https not supported or disabled in libcurl

Vấn đề đó được giải quyết như thế nào?


Điều gì xảy ra nếu bạn không sử dụng --with-openssl-dir=/usr/local(đơn giản là rvm install 1.9.2)?
Omri Barel

cùng một vấn đề, tôi nghĩ rằng - với ... là một cách giải quyết
Giuseppe Di Federico

1
Tôi thấy khó tin rằng curl của bạn không hỗ trợ HTTPS. Có thể rvm đi kèm với curl của chính nó, hoặc bạn đã không cài đặt curl ( sudo apt-get install curl). Hãy thử curl -o "google.html" https://google.comkiểm tra xem HTTPS có được hỗ trợ không.
Omri Barel

Tôi có cùng một thông báo lỗi với RCurl.
đẳng cấu

ngạc nhiên không có câu trả lời được chấp nhận về điều này.
jbrahy

Câu trả lời:


294

Có câu trả lời TẠI ĐÂY cho các cửa sổ, nó nói rằng:

curl -XPUT 'http://localhost:9200/api/twittervnext/tweet'

Rất tiếc, lần đầu tiên thử và đã có lỗi:

curl: (1) Protocol 'http not supported or disabled in libcurl

Lý do cho lỗi này là loại ngu ngốc, Windows không thích nó khi bạn đang sử dụng dấu ngoặc đơn cho các lệnh . Vì vậy, lệnh chính xác là:

curl XPUT "http://localhost:9200/api/twittervnext/tweet"

2
sử dụng cURL hỗ trợ SSL SSL curl.haxx.se/latest.cgi?curl=win64-ssl-sspi thay vào đó nếu không có câu trả lời nào được cung cấp khác hoạt động cho windows.
ganesh

6
Điều này là chính xác và chỉ cần thêm một chút muối, nếu bạn thực sự muốn sử dụng dấu ngoặc kép trong chuỗi bạn đang trích dẫn, thì bạn cần phải thoát chúng, ví dụ: curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary "{ \"name\":\"Curler\", \"text\": \"Hello from the command line\" }"thay vì curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary '{ "name":"Curler", "text": "Hello from the command line" }'... lưu ý đến dấu ngoặc đơn và không thoát trích dẫn về phần sai.
Emmanuel Mahuni

@EmmanuelMahuni Cảm ơn bạn đã đầu mối. Tôi đã gặp vấn đề tương tự trong khi thử CURL từ đường ống bitbucket, giá trị của tôi bao gồm dấu ngoặc kép (") (khi tôi đọc từ phản hồi json từ aws cli bằng jq), một lần sau khi xóa kép từ đầu và cuối. làm việc cho tôi. Đây là cách tôi đã làm. new_url=$( echo $url | tr -d \" )
Appu Mistri

1
Bạn vừa tiết kiệm cho tôi RẤT NHIỀU thời gian! Cảm ơn!
Richard Varno

1
Có tác dụng tương tự với curl trên macOS.
not2savvy

82

Tôi gặp vấn đề này và hóa ra rằng có một khoảng trống trước khi httpsgây ra vấn đề. " https://"đấu với"https://"


6
Và tôi đã nhận được cùng. Tôi đã ngạc nhiên tại sao địa ngục trần gian tôi lại nhận được lỗi này. :) +1 để chia sẻ điều này.
Awais Qarni

3
Tương tự đối với tôi, đó là một trích dẫn duy nhất bởi vì chúng tôi đã gói một giá trị bash mặc định bằng một trích dẫn mặc dù không cần thiết ...
Mathieu Dumoulin

1
Thật đáng ngạc nhiên khi đây rõ ràng là một vấn đề đối với rất nhiều người - bao gồm cả bản thân tôi. Điều này xảy ra theo thời gian, nhưng nó có vẻ mơ hồ. À Cảm ơn
dgo

1
Đó là vấn đề đối với tôi. Cảm ơn @jbrahy
colecmc

1
Vâng, tôi đã nhận được như vậy. Bằng cách loại bỏ không gian, nó làm việc tốt cho tôi.
Amandeep kaur

21

Có vẻ như đã có rất nhiều Câu trả lời rồi nhưng vấn đề tôi gặp phải là với dấu ngoặc kép. Có một sự khác biệt ở giữa:

"

Thay đổi trích dẫn kép thứ 1 thành lần thứ hai làm việc cho tôi, dưới đây là mẫu curl:

curl -X PUT -u xxx:xxx -T test.txt "https://test.com/test/test.txt"

Chắc chắn người đàn ông của tôi.
Pavan_Obj

Điều này đã khắc phục vấn đề của tôi.
Hari Ennekat

Vui mừng nó đã sửa :).
Pavan_Obj

11

Tôi gặp vấn đề tương tự trong khi cố gắng cài đặt rvm cho ruby. tìm thấy giải pháp: sau khi giải nén curl (tar) trong thư mục download của root.

cd /root/Downloads/curl # step-1
./configure --with-ssl # step-2
make # step-3
make install # step-4 (if not root, use sudo before command)

nguồn



8

Điều này được đề cập cụ thể trong mục Câu hỏi thường gặp về libcurl " Giao thức xxx không được hỗ trợ hoặc vô hiệu hóa trong libcurl ".

Vì niềm vui của bạn, tôi cũng nhúng lời giải thích ở đây:

Khi chuyển URL để cuộn tròn để sử dụng, nó có thể phản hồi rằng giao thức cụ thể không được hỗ trợ hoặc vô hiệu hóa. Cách đặc biệt của thông báo lỗi này là do curl không tạo ra sự khác biệt trong nội bộ về việc một giao thức cụ thể không được hỗ trợ (tức là không bao giờ có bất kỳ mã nào được thêm vào mà biết cách nói giao thức đó) hoặc nếu nó bị vô hiệu hóa rõ ràng. curl có thể được xây dựng để chỉ hỗ trợ một bộ giao thức nhất định và phần còn lại sau đó sẽ bị vô hiệu hóa hoặc không được hỗ trợ.

Lưu ý rằng lỗi này cũng sẽ xảy ra nếu bạn chuyển một phần giao thức sai chính tả như trong "htpt: //example.com" hoặc như trong trường hợp ít rõ ràng hơn nếu bạn đặt tiền tố cho phần giao thức có khoảng trắng như trong " ví dụ http: // .com / ".


10
Tôi không tin câu trả lời này giải thích cho OP những gì anh ấy cần làm để khắc phục vấn đề.
đẳng cấu

3
nó giải thích ý nghĩa của thông điệp, ngụ ý rằng dòng lệnh của anh ta không đủ để xây dựng libcurl khi bật HTTPS
Daniel Stenberg

Có bit bởi tiền tố không gian. Nếu chỉ có lỗi, hãy đọc 'Giao thức "xxx" không được hỗ trợ hoặc vô hiệu hóa trong libcurl'
topher 23/07/14

8

Trong trường hợp của tôi, giao thức HTTPS không được libcurl hỗ trợ ngay từ đầu. Để tìm ra giao thức nào được hỗ trợ và giao thức nào không, tôi đã kiểm tra phiên bản curl bằng lệnh:

curl --version

Nó cung cấp thông tin như sau: curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Giao thức: dict file ftp ftps gopher http imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Các tính năng: IPv6 Largeefile NTLM NTLM_WB SSL libz UnixSockets

nơi giao thức https xảy ra không được hỗ trợ.

Sau đó, tôi cài đặt lại curl và cài đặt nó bằng các lệnh sau (sau khi giải nén):

./cool --with-darwinssl (bật giao tiếp ssl trong mac) thực hiện kiểm tra sudo thực hiện cài đặt

Và sau vài phút làm việc, vấn đề đã được giải quyết!

Sau đó, tôi chạy lại lệnh phiên bản curl, nó hiển thị:

curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 Giao thức: tập tin dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Các tính năng: IPv6 Largeefile NTLM NTLM_WB SSL libz UnixSockets

Giao thức HTTPS xuất hiện!

Cuối cùng, một trang web hữu ích để tham khảo khi bạn gặp vấn đề về curl. https://curl.haxx.se/docs/install.html


7

Tôi giải quyết nó chỉ bằng cách thay đổi 'http://webname...'thành"http://webname..."

Thông báo báo giá. Nó nên là double ( ") thay vì single ( ').


Đúng! Điều này đã giải quyết vấn đề cho tôi, chạy curl trong dấu nhắc lệnh windows của tôi. Cảm ơn bạn!
Ryano

2

Vấn đề của tôi đã được giải quyết bằng cách không hiển thị biểu tượng UTF. Tôi sao chép liên kết từ nginx track và có phần tiếp theo trong clipboard:

0x00000000: e2 80 8b 68 74 74 70 73 3a 2f 2f 73 6b 2e 65 65 2f 75 70 6c 6f 61 64 2f 66 69 6c 65 73 2f 45 53  ...https://sk.ee/upload/files/ES
0x00000020: 54 45 49 44 2d 53 4b 5f 32 30 31 35 2e 70 65 6d 2e 63 72 74                                      TEID-SK_2015.pem.crt            

Biểu tượng vấn đề là 0xe2 0x80 0x8b ZERO WIDTH THAM GIA , có trước https.


1

Có cùng một lỗi khi sử dụng curl trên trang web https như

curl https://api.dis...

như ganesh đã chỉ ra , đó là vì phiên bản curl của tôi không được bật ssl. đã quay lại và tải xuống phiên bản với ssl và nó hoạt động tốt.


1
Tôi cũng vậy, không thấy tùy chọn SSL trên trang tải xuống.
Patrick Borkowicz

0

Tôi vừa biên dịch lại curl với các tùy chọn cấu hình trỏ đến thư mục thư viện openssl 1.0.2g và bao gồm thư mục, và tôi vẫn nhận được thông báo này. Khi tôi thực hiện thao tác uốn tóc, nó không cho thấy rằng nó sử dụng libcrypt.sohoặc libssl.so, vì vậy tôi cho rằng điều này phải có nghĩa là mặc dù makemake installđã thành công mà không có lỗi, tuy nhiên curl không có hỗ trợ HTTPS? Cấu hình và thực hiện như sau:

./configure --prefix=/local/scratch/PACKAGES/local --with-ssl=/local/scratch/PACKAGES/local/openssl/openssl-1.0.2g --includedir=/local/scratch/PACKAGES/local/include/openssl/openssl-1.0.2g
make
make test
make install

Tôi nên đề cập đó libssl.so.1là trong /local/scratch/PACKAGES/local/lib. Không rõ liệu --with-ssltùy chọn nên trỏ đến đó hay vào thư mục nơi cài đặt openssl đặt tệp openssl.cnf. Tôi đã chọn cái sau. Nhưng nếu nó được coi là trước đây, thì việc tạo ra đã thất bại với một lỗi mà nó không thể tìm thấy thư viện.


Các văn bản liên kết là chính xác. curl không thể truy xuất bằng https và tôi không biết tại sao.
tedtoal 30/03/2016

0

Chỉ định giao thức trong url có thể giải quyết vấn đề của bạn.

Tôi gặp vấn đề tương tự (trong khi sử dụng ứng dụng khách curl php):

Tôi đã vượt qua domain.com thay vì sftp: //domain.com dẫn đến lỗi khó hiểu này:

Giao thức "http" không được hỗ trợ hoặc vô hiệu hóa trong libcurl, mất 0 giây.

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.