Як використовувати спеціальні символи для імені користувача / пароля для 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. "R @" там не повинно бути.
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
кодування - це дійсно спосіб подолати цю проблему (та багато інших).
HTDutchy

я виявив, що мені потрібно подвоїти 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 config set proxy http: // user: abc%21@proxy.world.com: 8080 /

npm config set https-proxy http: // user: 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.