60

ユーザー エージェント文字列を作成するための RFC、公式標準、またはテンプレートはありますか? iPhone のユーザー エージェント文字列がおかしいようです...

Mozilla/5.0 (iPhone; U; Mac OS X のような CPU iPhone OS 3_1_2 ; en-us) AppleWebKit/528.18 ( Gecko のような KHTML ) バージョン/4.0 Mobile/7D11 Safari/528.16

4

3 に答える 3

77

User-AgentヘッダーはRFC7231、 の改良版である の一部であり、次のRFC1945ように記載されています。

User-Agentrequest-header フィールドには、リクエストを発信したユーザー エージェントに関する情報が含まれています。これは、統計目的、プロトコル違反の追跡、および特定のユーザー エージェントの制限を回避するために応答を調整するためのユーザー エージェントの自動認識のためです。ユーザー エージェントは、このフィールドをリクエストに含める必要があります。このフィールドには、複数のproductトークン (セクション 3.8) とcomments、ユーザー エージェントの重要な部分を形成するエージェントとサブプロダクトを識別するものを含めることができます。慣例により、productトークンは、アプリケーションを識別するために重要な順にリストされています。

EBNF の定義:

   User-Agent      = "User-Agent" ":" 1*( product | comment )

は次productのように定義されます。

   product         = token ["/" product-version]
   product-version = token
   token           = 1*<any CHAR except CTLs or separators>

そしてcomment次のように:

   comment         = "(" *( ctext | quoted-pair | comment ) ")"
   ctext           = <any TEXT excluding "(" and ")">

参考までに、その他のルールは次のとおりです。

   CTL             = <control characters, e.g. ASCII 0x00 through 0x0F and 0x7F>
   separators      = "(" | ")" | "<" | ">" | "@"
                     "," | ";" | ":" | "\" | <">
                     "/" | "[" | "]" | "?" | "="
                     "{" | "}" | SP | HT
   SP              = <ASCII space 0x20, i.e. " ">
   HT              = <ASCII horizontal tab 0x09, aka '\t'>

これは、product文字列にスペースを含めることはできませんが、文字列には含めることができることを意味することに注意してくださいcomment


例:

文字列の有効な例を次に示しproductます (文字product-version列の有無にかかわらず):

# Single `product` without product-version:
Foobar
Foobar-baz

# Single `product` with product-version:
Foobar/abc
Foobar/1.0.0
Foobar/2021.44.30.15-b917dc

comment文字列の有効な例を次に示します。すべての文字列が対応する括弧で囲まれていることに注意してください( )

# This was the default `comment` used by Internet Explorer 11:
(Windows NT 6.1; WOW64; Trident/7.0; rv:11.0)

# You can put almost any text inside a comment:
(Why are you looking at HTTP headers? Go outside, find love, do some good in the world)

# Note that `comment` strings can also be nested, provided their delimiting parentheses are matched, for example:
(Outer comment (Inner comment))

User-Agentヘッダーの値は任意productの文字列で構成されるためcomment、これらはすべて有効なUser-Agentヘッダーです。

User-Agent: Foobar
User-Agent: Foobar/2021.44.30.15-b917dc
User-Agent: MyProduct Foobar/2021.44.30.15-b917dc
User-Agent: Tsom/OfraHaza (Life is short and love is always over in the morning) AnotherProduct
于 2010-04-08T16:06:03.260 に答える
11

これは、RFC 1945のリクエスト ヘッダーのセクションで指定されています。ただし、これはあまり標準化された形式ではなく、ユーザー エージェントは必要なものをそこに入れる傾向があります。

于 2010-04-08T15:57:14.513 に答える
3

はい、mozilla websiteを参照してください。ただし、前述のとおりです。基本的には、好きなものをそこに置くことができます。統計/分析の目的で最も重要なことは、すべてのブラウザー/OS でこれを標準化する必要があるということです。

于 2010-04-08T15:59:49.763 に答える