2

httpの「Accept」ヘッダーに問題があります。httpクライアントを作成しましたが、「Accept:image / png」を設定しても、任意のファイル(txt、htmlなど)を読み取ることができます。上記のようにヘッダー「Accept」を設定した場合は不可能だと思います。

Firefoxの動作を確認してみました。「about:config」と書き、「network.http.accept.default」を「image / png」に設定すると、通常どおりネットサーフィンができます。

このヘッダーの意味を誤解していますか?ファイル*.pngしか開けないはずだと思います。

4

4 に答える 4

4

Acceptは必須ではありません。サーバーはそれを実装できない(そしてしばしばそうする)か、何か他のものを返すことを決定します。

[Accept]ヘッダーフィールドがリクエストに存在し、応答に使用可能な表現のいずれにも受け入れ可能としてリストされているメディアタイプがない場合、オリジンサーバーは406(受け入れ不可)応答を送信することによってヘッダーフィールドを尊重するか、応答をコンテンツネゴシエーションの対象ではないかのように扱うことにより、ヘッダーフィールドを無視します。

ソース-RFC72315.3.2。承認

于 2012-11-11T06:15:56.780 に答える
1

実際、前者の動作は正常です。例を挙げましょう。

指定されたURLがPDFファイルを指し、Acceptヘッダーがdocxのみを受け入れる場合、サーバーはPDFと他のドキュメントのどちらかを決定するように設定されていないため、サーバーはそれをやみくもに無視してPDFファイルを送信します。

使用可能な形式が複数ある場合、サーバーは「Accept」ヘッダーを考慮し、それに応じて応答を送信しようとします。そうでない場合、サーバーは「Accept」ヘッダーを無視します。

于 2015-11-21T17:33:24.270 に答える
0

acceptヘッダーはブラウザーによる実装が不十分であり、クローラーが要求を行うパブリックサイトで使用すると奇妙なエラーが発生します。

そのため、 Railフレームワークのように、acceptヘッダーはほとんどの場合無視されます。

于 2012-11-10T14:42:14.590 に答える
0

ご想像のとおり、Acceptを設定すると、指定されたメディア以外のメディアを受け入れることができなくなり、サーバーは406応答コードを返す必要があります。実際には、サーバーは正しく実装されておらず、常に応答を送信します。

すべての詳細はRFC2616で利用可能です

于 2012-11-10T14:48:35.843 に答える