web-dev-qa-db-ja.com

基本認証URLでのユーザー名文字のエスケープ

Http基本認証を使用する場合、ユーザー名をURLで渡すことができます。

http://[email protected]/path/

しかし今、ユーザー名が電子メールアドレスであるとします。 [email protected]。これを行うことは明らかに曖昧です:

http://[email protected]@foo.com/path/

ユーザー名の@文字をエスケープする方法はありますか?私は標準のURLエンコードを試しました:

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

しかし、それはしませんでした。

46
David Ebbo

RFC 3986 、セクション3.2.1によると、パーセントエンコードする必要があります。

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

だから

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

は正しい。どこで読もうとしていますか?たぶん、手動で値をデコードする必要がありますか?

64
sagi