web-dev-qa-db-ja.com

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

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'はどういう意味ですか?

183
kolypto

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

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

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

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

231
Tim Cooper

仕様では、relative quality factorと呼ばれています:

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

...

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

「オーディオ/ベーシックを好むが、品質が80%引き下げられた後に利用可能なオーディオタイプがあればそれを送ってください」と解釈されるべきです。

こちらもご覧ください:

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

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

サーバー、このウェブサイトのポーランド語の翻訳を教えてください。ただし、その品質が>= %80%のrelated-quality-factorの場合にのみ行ってください。品質が<80%の場合-英語版を取得してもかまいません。とにかく英語を話すので、私にとっては無関係です。

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

4
test30