0

最近、.net Web サービスを使用する iOS アプリケーションの開発を行っています。その中で、Web サービス メソッド呼び出しへのポスト リクエストの場合、誤って http ヘッダーでユーザー エージェントを指定しました。

Mozilla/4.0 (互換性; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDS; . NET4.0C; .NET4.0E; InfoPath.2; MS-RTC LM 8; BRI/2)

Web サービスの呼び出しは、単に NSURLConnection を介して行われます。また、その Web サービス メソッドへの呼び出しが成功すると、iOS デバイスでそのアプリケーションを実行できます。私の質問は、iOS は HTTP ヘッダーで指定されたユーザー エージェントを無視するということですか? [少なくとも理論的に]このような互換性のないユーザーエージェントでコードが機能するのはなぜですか?

4

1 に答える 1

0

サーバーは、少なくとも 2 つの方法で User-Agent 文字列を使用します。

  1. サーバーへのアクセスに使用されている Web クライアントに関する統計を収集します。これは、Web サイトを運営する人間がより良い仕事をするのに役立ちます。

  2. クライアントの機能に合わせて出力を調整することで、より優れたユーザー エクスペリエンスを提供します。たとえば、多くの Web サイトは、(User-Agent 値を介して) クライアントが電話または小型タブレットであることを検出すると、小さな画面用にカスタマイズされたページを提供します。

ただし、Web サービスを呼び出すときは、通常、特定のブラウザー用にカスタマイズする必要のない XML または JSON 出力が期待されます。まず第一に、b) コンテンツが (少なくとも直接ではなく) ディスプレイにレンダリングされる可能性は低いです。そのため、User-Agent 文字列は、サーバーが Web サービス リクエストに応答する方法に違いをもたらさない場合があります。いずれにせよ、iOS デバイスから Web サービス リクエストを行うときに「MSIE」という User-Agent 文字列を提供しても、返される結果に違いはありません。

さて、それは User-Agent 文字列が決して違いを生まないと言っているわけではありません。それが一般的かどうかはわかりませんが、クライアントとサーバーの両方を制御する場合に、クライアントに適切な User-Agent を提供させることは非常に理にかなっています。クライアントにそのバージョンを含めると、サーバーはクライアントのバージョンに応じて異なる出力を提供できるため、既存のクライアントを壊さずに API を変更できます。

于 2012-07-06T15:42:22.387 に答える