28

RFC 2617を読んだことがありますが、複数のスキームがサポートされている場合、区切り文字が何であるかがわかりません。たとえば、Basic と Digest の両方がサポートされているとします。次のように表示される場合があることを理解しています。

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic
WWW-Authenticate: Digest

しかし、両方を1行としてリストできることも読みましたが、例を示したり、使用する区切り記号を説明したりする人はいません。コンマを単一のスキームで使用できるという注意事項を見てきました。

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest param1="foo", param2="bar"

また、スキーム内でコンマが使用されている場合、他のスキームは別の行に配置する必要があることも読みました。したがって、上記のケースで Basic を追加すると、次のようになると思います。

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest param1="foo", param2="bar"
WWW-Authenticate: Basic

それはとても簡単です。しかし今、あなたがたった1行しか持っていないとしましょう

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Scheme stuff, morestuff, more stuff

それはどれですか?それはスキームのコンマ区切りのリストですか、それともいくつかのパラメータを持つ 1 つのスキームですか?

4

1 に答える 1

30

私が知る限り、仕様はこの問題をパントします。セクション 1.2 には次のように記載されています。

注: ユーザー エージェントは、WWW -Authenticate または Proxy-Authenticate ヘッダー フィールドの値に 複数の challengeが含まれている場合、または複数の WWW-Authenticate ヘッダー フィールドが提供されている場合、その値を解析する際に特別な注意を払う必要

があります。 認証パラメータのコンマ区切りのリストを
それ自体に含めることができます。

特別なケア幸運の章に変換できると思います。

プラグマティズム
実際問題として、複数のスキームは複数のwwww-authenticateヘッダーを使用する必要があることを意味すると思います。スキームは拡張可能です。たとえば、不吉になりたい場合は、「ストロベリー」または「不透明」と呼ばれるスキームを考え出すことができます。これを考えると、ある種の「スキーム終了」区切り文字なしでワンライナーを解析する良い方法は実際にはありません。

W3C ディスカッション
この質問をしたのはあなただけではありません。W3C メーリング リストで議論がありました。ポスターは次のように述べています。

1 回の回答で複数の課題を提供する必要があることを疑問視していたわけではありません。私は、それが作成するセパレータの奇妙な組み合わせを考えると、単一のヘッダー フィールドで複数の課題を許可することの賢明さを疑問視しているだけでした.

現在の問題と将来の行動について議論している、興味のある他のスレッド:

もしそうなら...
私はそれに対する胃を持っているわけではありませんが、chromimum、firefox、およびwebkitコードを掘り下げて、それらのコミュニティが問題をどのように処理したかを確認できます.

于 2012-06-28T22:02:22.673 に答える