24

Я попробовал несколько способов, но они, кажется, сбивают с толку завиток.

root@testt:~# curl localhost:8080
<h1>Hello world!</h1>

<p>Boom Bam Splat</p>
root@testt:~# curl ::1:8080
curl: (3) IPv6 numerical address used in URL without brackets
root@testt:~# curl [::1]:8080
curl: (3) [globbing] bad range specification in column 2

2 ответа2

38

Глядя на предложения - и разбивку распространенных ошибок - в этом сообщении в блоге, возможно, вам следует попробовать это.

curl -g -6 "http://[::1]:8080/" 

Кажется, что -g - магический ключ, чтобы заставить это работать. Как объяснено на странице руководства curl :

Эта опция отключает "анализатор глобализации URL". Когда вы устанавливаете эту опцию, вы можете указать URL-адреса, которые содержат буквы {} [], без их интерпретации самим curl. Обратите внимание, что эти буквы не являются обычным легальным содержанием URL, но они должны быть закодированы в соответствии со стандартом URI.

А -6 означает использовать только IPv6:

Если libcurl способен разрешать адрес для нескольких версий IP (что и есть, если он поддерживает IPv6), эта опция указывает libcurl разрешать имена только в адреса IPv6.

Но, читая это описание функциональности, кажется, что -6 самом деле не нужен для чистого адреса IPv6; только если кто-то использует curl для имени хоста, к которому подключены адреса IPv4 и IPv6, поэтому он предпочитает IPv6. Просто кое-что отметить.

8

Из "curl --manual" я нашел это:

curl -g "http://[2001:1890:1112:1::20]/"

или же

curl "http://[2001:1890:1112:1::20]/"

Итак, для адреса, о котором вы спрашиваете, попробуйте:

curl -g "http://[::1]:8080/"

Тем не менее, вы можете запустить:

curl -V

и посмотрите, отображается ли IPv6 в строке с надписью "Features" (третья строка, не считая лишних строк из переноса слов). Я нашел свою версию нет. Страница загрузки cURL содержит различные ссылки на операционные системы, включая сайт загрузки curl 7.41.0 (который в настоящее время является последней версией) для Microsoft Windows. На этой странице есть несколько исполняемых файлов (доступно для Microsoft Windows); первый, который я нашел, не поддерживал IPv6. Но два, описанных как «ipv6-sspi-spnego-winssl» (один для x86 и один для x64), сделали: curl -V действительно показал IPv6. Так что будьте осторожны с тем, какой пакет вы загружаете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .