web-dev-qa-db-ja.com

HEADを介したダウンロード可能なファイルの要求

GoogleがHTTP HEADおよびHTTP GETリクエストメソッドを介してWebページをチェックしているに違いありません。したがって、HTTP HEADリクエストを介してWebサイトからダウンロード可能なファイルの適切なヘッダー出力を許可する必要があると考えていますが、適切な方法を教えてくれるドキュメントはありません。

現在、これは、GETまたはHEAD要求メソッドのいずれかを使用してサーバーから要求した場合の、ダウンロード可能なファイルのHTTPヘッダーです。

HTTP/1.1 200 OK
Date: Sun, 06 Sep 2015 06:11:29 GMT
Server: Apache
Set-Cookie: CC=something;path=/;domain=example.com;expires=Tue, 06 Oct 2015 06:11:29 GMT
X-Robots-Tag: noindex
cache-control: max-age=864000,must-revalidate
Last-Modified: Sun, 06 Sep 2015 02:39:19 GMT
content-disposition: attachment; filename="HQ_Photo8.jpg.gz"
Content-Length: 251085
X-Frame-Options: DENY
Accept-Ranges: bytes
Content-Type: application/gzip

誰かがHEADリクエストメソッドを介してダウンロードをリクエストする場合、標準に準拠するためにどのヘッダーを追加または削除する必要がありますか?

HEADメソッドを使用して "content-length"ヘッダーを削除するように要求するとき、標準のhtmlドキュメントを読みましたが、これは私が扱っているダウンロード可能なファイルなので、より複雑です。

何か案は?

2
Mike

HEADおよびGET要求のHTTP応答ヘッダーは、identicalである必要があります。唯一の違いは、HEAD応答に応答bodyがないことです。

RFC 2616-HTTP/1.1セクション9.4 HEAD

9.4 HEAD

HEADメソッドは、サーバーが応答でメッセージ本文を返してはならないことを除いて、GETと同じです。 HEADリクエストに応じてHTTPヘッダーに含まれるメタ情報は、GETリクエストに応じて送信される情報と同一である必要があります 。このメソッドは、エンティティ本体自体を転送せずに、要求によって暗示されるエンティティに関するメタ情報を取得するために使用できます。この方法は、ハイパーテキストリンクの有効性、アクセシビリティ、最近の変更をテストするためによく使用されます。

HEAD要求への応答は、応答に含まれる情報を使用して、以前にキャッシュされたエンティティをそのリソースから更新できるという意味で、キャッシュ可能です。キャッシュされたエンティティが現在のエンティティと異なることを新しいフィールド値が示す場合(Content-Length、Content-MD5、 ETagまたはLast-Modified)、キャッシュはキャッシュエントリを失効として処理する必要があります。

応答からContent-Lengthヘッダーを省略する理由はないようです(おそらく、それを含めるのに計算コストがかかる場合を除きます)。仕様では、このヘッダーを含めることが具体的に記載されており、省略された場合、機能が低下する可能性があります。

HEADメソッドを使用して "content-length"ヘッダーを削除するように要求すると、標準のhtmlドキュメントを読みますが、これは私が扱っているダウンロード可能なファイルなので、より複雑です。

これはどこで読みましたか?

「HTMLドキュメント」と「ダウンロード可能なファイル」との間に実際の違いはありません。

2
MrWhite