Казалось бы, curl
анализирует и восстанавливает URL, исключая символы, которые он считает недопустимыми. Для меня эта же команда выдает другую ошибку, хотя ... Возможно, ваша версия curl отличается от моей.
$ curl -v http://OLM:OLM794$@127.0.0.1:10000
* Rebuilt URL to: http://OLM:OLM794127.0.0.1:10000/
* Port number ended with 'O'
* Closing connection -1
curl: (3) Port number ended with 'O'
Решение довольно тривиально, просто уберите url с символа $
: %24
:
$ curl http://OLM:OLM794%24@127.0.0.1:10000
Согласно RFC1738 , знак доллара был разрешен как незарезервированный символ и мог использоваться напрямую, но этот старый RFC с тех пор много раз обновлялся. RFC3986 , например, больше не упоминает его как незарезервированный символ. Это означает, что символ $
получил особое значение и должен быть закодирован в любом URL-адресе, где он не выполняет функцию, которой он был присвоен.