Accept * HTTPヘッダーのq = 0.5とは何ですか?


190
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

これらの「q =%f」はどういう意味ですか?

回答:


246

これは、相対品質係数と呼ばれます。HTTP / 1.1仕様§14.4からわかるように、ユーザーが希望する言語を0〜1のスケールで指定します。

各言語範囲には、その範囲で指定された言語に対するユーザーの好みの推定値を表す関連する品質値を与えることができます(MAY)。品質値のデフォルトは「q = 1」です。例えば、

  Accept-Language: da, en-gb;q=0.8, en;q=0.7

「私はデンマーク語が好きですが、イギリス英語と他のタイプの英語を受け入れます。」


26
とても素敵です、ありがとう!しかし、なぜそれらを優先順に並べないのですか?
kolypto 2011

9
それでは、正確には80%qualitiedエンギガバイトを受け入れることを意味するのでしょうか?
パセリエ2012年

3
@Pacerier:それは、あなたのウェブサイトが多言語である場合、ユーザーはアメリカ英語ではなくイギリス英語で提供されるコンテンツを好むことを意味します。
Tim Cooper

5
@TimCooper言語を順序付けまたは優先するだけではどうですか。他の値よりも大きいことを除けば、値は重要ではないようです。
ロブ

6
@kolyptoへのパラメータリストは、URLでもヘッダーでも、暗黙的な順序を持っていません。
JP Silvashy 2017年

37

これは、仕様では相対品質係数と呼ばれています。

各メディア範囲の後には、1つ以上のaccept-paramsが続く場合があり、相対的な品質係数を示す「q」パラメータで始まります。最初の「q」パラメーター(存在する場合)は、メディア範囲パラメーターをAccept-paramsから分離します。品質係数により、ユーザーまたはユーザーエージェントは、0から1までのqvalueスケールを使用して、そのメディア範囲の相対的な優先度を示すことができます(セクション3.9)。デフォルト値はq = 1です。

...

Accept: audio/*; q=0.2, audio/basic

「私はオーディオ/ベーシックを好むが、80%の品質低下で最高のオーディオタイプが得られれば、どんなオーディオタイプでも送ってください」と解釈する必要があります。

以下も参照してください。


2
私はパーティーに本当に遅れました-「品質が80%値下げされた後」とはどういう意味ですか?オーディオファイルの品質ではなく、好みの度合いですよね?それとも私はこれを誤解していますか?
2015

10
@Mave:まあ、実際には、それはおそらく主に好みの尺度として使用されます。ただし、元の形式では、それはエンコードの品質に基づいていることを意図していると思います。たとえば、FLACとMP3を検討してください。たとえば、「最低でもロスレスバージョンの品質の50%であればMP3バージョンを送ってください。そうでない場合は、FLACバージョンを送ってください。」その品質をどうやって定量化するか、それが実際に使われているかどうかはわかりませんが、それが本来の意図だと思います。
Sebastian PaaskeTørholm15年

1
@SebastianPaaskeTørholm私はこれに関する詳細を探してここに来ました。RFC 7231には、この二次的な意味をほのめかしているように思われる場所が2つしかありませんが、2つの意味が互いに矛盾する可能性があるため、どのように機能するのかは明確ではありません。たとえば、不可能だと思われます。 qvalueがこのようにオーバーロードされている場合、損失の少ないタイプよりも損失の多いタイプの優先を表現します。
セミコロン

最も好ましい言語は常にヘッダーの最初のパラメーターですか?
オールドボーイ

@BugWhispererリンクされた標準には、最初ではない、より複雑な例があります。ご相談ください。:)
Sebastian PaaskeTørholm19年

6

Accept-languages品質パラメーターは次のように理解できます。

Accept-Language: pl_PL;q=0.8, en_US;q=0.2,ヘッダーをリクエストに添付することにより、メッセージに続いてサーバーと通信します

サーバー、このウェブサイトのポーランド語の翻訳を提供してください。ただし、品質が>= %80%関連する品質係数の場合にのみ行ってください。品質が<80%良ければ-とにかく英語を話すので私には関係ないので、英語版を入手してもかまいません。

したがって、たとえば、Webページコンテンツプロバイダーとして、Accept-Languageヘッダーの解析を導入して、英語をまったく話さない外国人にWebサイトを適合させることができます(翻訳されたナビゲーションも役立ちます(ナビゲーションのみを翻訳したページは、 、持っているq=0.1)、完全に翻訳されたコンテンツがq=0.9あり、完全に翻訳されたコンテンツであり、元の言語と翻訳された言語のコンテンツの両方を話すネイティブスピーカーによって検証されている場合があるq=0.99-これは、コンテンツの意味が完全に変換される唯一の可能な状況であるため)


最も好ましい言語は常にヘッダーの最初のパラメーターですか?
オールドボーイ

@BugWhispererはい、ただし、標準に厳密にしたい場合、および翻訳がかなり単純または弱い場合
test30

なぜ2番目の値を使用する方が厳しいのですか?
オールドボーイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.