Escape @ character в Git proxy password


У меня есть git proxy config как 'http.proxy=http: / / userId: pwd@123@IP-адрес:порт, но в то время как клонирование дистанционного проекта, я получаю ошибки, как

Cloning into git...
error: Couldn't resolve proxy '123@ipaddress' while accessing http://git.kernel.org/pub/scm/git/git.git/info/refs

fatal: HTTP request failed

Как избежать символа ' @ ' в пароле?

Pls примечание: Я не могу изменить пароль.

2 57

2 ответа:

Я бы попробовал использовать кодированное значение URL символа@, если вы передаете пароль в URL прокси:

http.proxy=http://userId:pwd%40123@ipaddress:port

Примечание (Ноябрь 2013 Года)

кодирование url (особенно любого специального символа в пароле) является правильным решением.
Элемент .netrc упомянутый ниже предназначен только для url удаленного РЕПО, а не для прокси, используемого для разрешения указанного url удаленного РЕПО.

для указанной кодировки см. "процент-кодирование":

процентное кодирование, также известное как URL кодирование, это механизм для кодирования информации в униформа Идентификатор Ресурса (URI) при определенных обстоятельствах. Хотя он известен как кодировка URL, на самом деле он используется более широко в основном Единый Идентификатор Ресурса (URI) набор, который включает в себя оба Единый Локатор Ресурсов (URL) и Унифицированное Имя Ресурса (урна). Как таковой, он также используется при подготовке данных приложения/x-www-form-urlencoded тип носителей, как часто используется в представлении HTMLформа данные HTTP запросы.

зарезервированные символы после процентного кодирования:

!   #   $    &   '   (   )   *   +   ,   /   :   ;   =   ?   @   [   ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D

оригинальный ответ (май 2011 года)

два комментария:

  • наличие пароля для сервера, доступ к которому осуществляется с помощью http (не https)... странный. Пароль не шифруется во время связи между клиентом и сервером;

  • вы можете настроить а .netrc (или _netrc для Windows) в вашем $HOME, следующего содержания

    machine ipaddress:port
    login userId
    password pwd@

завиток, используемый Git bbehind сцена будет обрабатывать кодировку просто отлично,@ или нет @.