2011-07-16 27 views
35

http temel kimlik doğrulaması kullanıldığında, kullanıcı adı URL'ye, örn.Temel kimlik doğrulama URL'lerinde kullanıcı adı karakterlerinden yararlanma

http://[email protected]/path/ 

Ama şimdi kullanıcı adı email adresi, örneğin olduğunu varsayalım [email protected] Bunu yapmak açıkça belirsiz:

Kullanıcı adında @ karakterinden kurtulmanın bir yolu var mı? Standart URL kodlamasını denedim:

http://david%[email protected]/path/ 

Ancak bunu yapmadı.

+0

@ URL'lerde kullanamazsınız. Yoksa yanlış mı anladım? – Hnatt

+0

Biliyorum partiye biraz geç kaldım, ama sadece şifre kısmını özledin mi? standart sözdizimi 'http (s): // kullanıcı: pass @ host' olmalıdır. Bu durumda sizin durumunuzda http: //david%40company.com: Y0ur% 24up3r% 243cur3P% 40% 24% 24w0rd @ foo.com 'olmalıdır. – FatalMerlin

+0

@FatalMerlin, hem kullanıcı adıyla hem de kullanıcı adı ve şifreyle hem lezzetine sahip olabilirsiniz. Yine de bu kaçış sorununa ortogonal düşünüyorum. –

cevap

52

RFC 3986 göre, bölüm 3.2.1, bu yüzde kodlanmış olması gerekir:

http://david%[email protected]/path/ 

iyi mi gibi

userinfo = *(unreserved/pct-encoded/sub-delims/":") 

Yani görünüyor. Onu okumak için nereye gidiyorsun? Belki değeri el ile çözmek gerekiyor?

+0

Kimlik bilgilerini işleyen kendi sunucu kodum var. Hata ayıklamak ve bu şekilde kaçtığımda aldığım şeyi tam olarak görmem gerekiyor. Ben takip edeceğim! –

+2

İstemcilerin bu sözdizimiyle iyi performans göstermiyor. Örneğin. IE9, herhangi bir istek göndermeden önce engeller ve "Windows http: //david%[email protected]/path/ 'bulamıyor." Hatasını verir. Yazımı denetleyin ve tekrar deneyin. ". Bu bana, bu sözdiziminin RFC'den ne göründüğüne rağmen desteklenmediğine inanmamı sağlıyor. –

+0

Curl kullanarak güzel çalışıyor ... –

İlgili konular