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

31128
pyropenguin

Я пытаюсь настроить 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 

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

19
Сбой набора или инструмент, использующий переменную среды http_proxy, не работает из-за символа @? Mike Cornell 13 лет назад 0
Да. Поскольку форматом является имя пользователя: пароль @ сервер: порт, наличие символа @ в середине вашего пароля приводит к тому, что правая часть вашего пароля считается именем хоста, поэтому приведенное выше разрешение имени хоста не выполняется, поскольку оно считает, что имя хоста равно r @ http- gateway.domain.org. «@» Не должно быть там. Philluminati 13 лет назад 0
Я пытался использовать% 40, и он работал (на Windows), вы уверены? thegreendroid 12 лет назад 2
На самом деле он работает как в Windows, так и в Linux (Ubuntu). thegreendroid 12 лет назад 0
дубликат http://stackoverflow.com/questions/6172719/escape-character-in-git-proxy-password rofrol 9 лет назад 0

4 ответа на вопрос

21
ravi parekh

You have to percent-encode | encode the special characters. E.g. instead of this:

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

you write this:

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

So @ gets replaced with %40.

кодирование действительно способ обойти эту проблему (и многие другие). HTDutchy 11 лет назад 2
я обнаружил, что мне нужно удвоить urlencode некоторых символов dovidweisz 8 лет назад 0
Я предлагаю просто использовать javascript `encodeURIComponent ()` для этой цели. Вы можете легко использовать `DeveloperTools -> Console` вашего браузера. Mir-Ismaili 5 лет назад 0
2
Sandeep Kumar

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

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

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

0
Richa Goyal

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

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

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

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

-1
Mike Cornell

Основываясь на этом ответе на вопросе 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 13 лет назад 0
Это вопрос на основе Linux, а не вопрос на основе Windows, использование ^ не работает для меня. Я все еще получаю `wget: не могу определить адрес хоста` tf4ce @ server.company.com'` после установки переменной окружения прокси. Philluminati 13 лет назад 0
На самом деле это вопрос, основанный на Windows ... Я лично знаю пиропенгуна. Mike Cornell 13 лет назад 1