Как использовать специальные символы в имени пользователя / пароле для HTTP-прокси?


26

Я пытаюсь настроить HTTP-прокси на компьютере с Windows. Проблема в том, что в пароле есть специальный символ (@), который вызывает setсбой команды.

Я пробовал как экранировать символ ( \@) и кодирование процентов с шестнадцатеричным значением ( %40), но безрезультатно.

Например, с именем пользователя Foo и паролем B @ r я пробовал следующие команды:

set http_proxy=http://foo:B\@r@http-gateway.domain.org:80
set http_proxy=http://foo:B%40r@http-gateway.domain.org:80

Помимо смены пароля, как прокси-сервер может использовать пароль?


Сбой набора или инструмент, использующий переменную среды http_proxy, не работает из-за символа @?
Майк Корнелл

Да. Поскольку форматом является имя пользователя: пароль @ сервер: порт, наличие символа @ в середине вашего пароля приводит к тому, что правая часть вашего пароля считается именем хоста, поэтому приведенное выше разрешение имени хоста не выполняется, поскольку оно считает, что имя хоста равно r @ http- gateway.domain.org. «@» Не должно быть там.
Philluminati

2
Я пытался использовать% 40, и он работал (на Windows), вы уверены?
thegreendroid

На самом деле, он работает как в Windows, так и в Linux (Ubuntu).
thegreendroid

Ответы:


29

Вы должны кодировать в процентах | кодировать специальные символы. Например, вместо этого:

http://foo:B@r@http-gateway.domain.org:80

ты пишешь это:

http://foo:B%40r@http-gateway.domain.org:80

Так @заменяется на %40.


2
кодирование действительно способ обойти эту проблему (и многие другие).
HTTutchy

я обнаружил, что мне нужно удвоить urlencode некоторых символов
dovidweisz

1
Я предлагаю просто использовать JavaScript encodeURIComponent()для этой цели. Вы можете легко использовать свой браузер DeveloperTools -> Console.
Мир Исмаили

2

Используйте% Ascii код специального символа в шестнадцатеричной записи для любого специального символа. Предположим, что Мой пароль AB @ 12 #, а затем пароль должен быть установлен как

git config --global http.proxy *http://usernamne:**AB%4012%23%26**@myipadress:portnumber*

Обратитесь к таблице ascii, чтобы узнать шестнадцатеричный код ascii любого числа.


1

Для любых специальных символов в имени пользователя или пароле мы всегда можем использовать вместо него строки в кодировке UTF-8. Например: ! можно заменить на% 21

так что команда будет, если пароль abc!

Конфигурация npm установленный прокси http: // пользователь: abc%21@proxy.world.com: 8080 /

Конфигурация npm установлена ​​https-прокси http: // пользователь: abc%21@proxy.world.com: 8080 /


-1

Основываясь на этом ответе на вопросе SO , можете ли вы использовать ^, чтобы избежать символа @?


В ответ на оба, набор успешен, это инструмент, использующий переменную среды: set http_proxy=http://foo:B^@r@http-gateway.domain.org:80 jruby -S gem install rakeОШИБКА: при выполнении gem ... (URI :: InvalidURIError) схема http не принимает часть реестра: foo: B @ r @ http- gateway.domain.org:80 (или неверное имя хоста?)
pyropenguin

Это вопрос на основе Linux, а не вопрос на основе Windows, использование ^ не работает для меня. Я все еще получаю wget: unable to resolve host address tf4ce @ server.company.com'` после установки переменной окружения прокси.
Philluminati

2
На самом деле это вопрос на базе Windows ... Я лично знаю пиропенгуна.
Майк Корнелл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.