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.