9

"username:password" の結果の文字列リテラルが Authorization ヘッダーで Base64 でエンコードされるのはなぜですか? その背景は?

4

2 に答える 2

5

これは、エンコードされる前のuserid-passwordタプルの生成規則です。

userid-password   = [ token ] ":" *TEXT

ここで、トークンは次のように指定されます。

   token          = 1*<any CHAR except CTLs or tspecials>

これは基本的に 32 ~ 126 の範囲内の任意の US-ASCII 文字ですが、一部の特殊文字( ()<>@,;:\"/[、スペース、および水平タブ)は]含まれません。?={}

また、TEXTは次のように指定します。

   TEXT           = <any OCTET except CTLs,
                    but including LWS>

これは基本的に、制御文字(コードポイント0 ~ 31、127) を除く任意のオクテット(0 ~ 255) シーケンスですが、CRLF シーケンスが先行する可能性のある 1 つ以上のスペースまたは水平タブ文字である線形空白シーケンスが含まれます。

   LWS            = [CRLF] 1*( SP | HT )

これはヘッダー フィールドの値を壊しませんが、LWSには単一のスペースと同じセマンティクスがあります

折りたたみを含むすべての線形空白は、SP と同じセマンティクスを持ちます。

このようなシーケンスをそのまま保持するために、文字列はフィールド値として配置される前にエンコードされます。

于 2012-12-01T16:40:41.537 に答える