Bagaimana cara menggunakan karakter khusus dalam nama pengguna / kata sandi untuk proxy HTTP?


26

Saya mencoba mengatur proxy HTTP pada mesin Windows. Masalahnya, kata sandi memiliki karakter khusus (@) di dalamnya yang menyebabkan setperintah gagal.

Saya telah mencoba melarikan diri karakter ( \@) dan persen-encoding dengan nilai hex ( %40), tidak berhasil.

Misalnya, dengan nama pengguna Foo dan kata sandi B @ r, saya telah mencoba perintah berikut:

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

Selain mengubah kata sandi, bagaimana saya dapat meminta proxy menggunakan kata sandi?


Apakah set gagal atau apakah alat menggunakan variabel lingkungan http_proxy gagal karena simbol @?
Mike Cornell

Iya nih. Karena formatnya adalah nama pengguna: kata sandi @ server: port, memiliki @ di tengah kata sandi Anda menyebabkan sisi kanan kata sandi Anda dianggap sebagai nama host, sehingga resolusi nama host di atas gagal karena menganggap nama host adalah r @ http- gateway.domain.org. "R @" seharusnya tidak ada di sana.
Philluminati

2
Saya mencoba menggunakan% 40 dan berhasil (di Windows), Anda yakin?
thegreendroid

Bahkan, ia bekerja pada Windows dan Linux (Ubuntu).
thegreendroid

Jawaban:


29

Anda harus meng-enkode persen | menyandikan karakter khusus. Misalnya bukannya ini:

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

Anda menulis ini:

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

Jadi @akan diganti dengan %40.


2
pengkodean memang cara untuk mengatasi masalah ini (dan banyak lainnya).
HTDutchy

saya menemukan bahwa saya perlu menggandakan urlencode beberapa karakter
dovidweisz

1
Saya sarankan hanya menggunakan javascript encodeURIComponent()untuk tujuan ini. Anda dapat dengan mudah menggunakan browser Anda DeveloperTools -> Console.
Mir-Ismaili

2

Gunakan kode% Ascii karakter khusus dalam notasi heksadesimal untuk setiap karakter khusus. Misalkan kata sandi saya adalah AB @ 12 # & maka kata sandi harus ditetapkan sebagai

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

Lihat tabel ascii untuk mengetahui kode ascii heksadesimal dari nomor apa pun.



-1

Berdasarkan jawaban ini pada SO , dapatkah Anda mencoba menggunakan ^ untuk menghindari simbol @?


Menanggapi keduanya, himpunan berhasil, ini adalah alat yang menggunakan variabel lingkungan: set http_proxy=http://foo:B^@r@http-gateway.domain.org:80 jruby -S gem install rakeERROR: Saat menjalankan permata ... (URI :: InvalidURIError) skema http tidak menerima bagian registri: foo: B @ r @ http- gateway.domain.org:80 (atau hostname yang buruk?)
pyropenguin

Ini adalah pertanyaan berbasis Linux, bukan pertanyaan berbasis Windows, menggunakan ^ tidak berfungsi untuk saya. Saya masih mendapatkan wget: unable to resolve host address tf4ce @ server.company.com 'setelah mengatur variabel lingkungan proxy.
Philluminati

2
Sebenarnya itu ADALAH pertanyaan berbasis Windows ... Saya tahu pyropenguin secara pribadi.
Mike Cornell
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.