1

Accept ヘッダーに基づいて別の応答を返すサーバーがあります。たとえば、Accept ヘッダーに「image/webp」が含まれている場合は webp 画像が提供され、それ以外の場合は jpg が提供されます。

以下の例のように、Varnish をサーバー レベルで実行すると、正しく実行されます。

リクエスト (Accept ヘッダーに image/webp を含む):

curl -s -D - -o /dev/null "https://REDACTED/media/tokinoha_bowl-4.jpg?sh=2&fmt=webp,jpg" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"

応答 (提供された webp 画像):

HTTP/2 200 
date: Wed, 06 Feb 2019 08:25:05 GMT
content-type: image/webp
access-control-allow-origin: *
cache-control: public, s-maxage=31536000, max-age=31536000
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
strict-transport-security: max-age=31536000; includeSubDomains
vary: Accept-Encoding, Accept-Encoding,Origin
referrer-policy: strict-origin-when-cross-origin
accept-ranges: bytes
content-length: 60028

リクエスト (Accept ヘッダーに webp なし、jpg が提供される):

curl -s -D - -o /dev/null "https://REDACTED/media/tokinoha_bowl-4.jpg?sh=2&fmt=webp,jpg" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/apng,*/*;q=0.8"

応答:

HTTP/2 200 
date: Wed, 06 Feb 2019 08:25:18 GMT
content-type: image/jpeg
access-control-allow-origin: *
cache-control: public, s-maxage=31536000, max-age=31536000
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
strict-transport-security: max-age=31536000; includeSubDomains
vary: Accept-Encoding, Accept-Encoding,Origin
referrer-policy: strict-origin-when-cross-origin
accept-ranges: bytes
content-length: 166991

ルール エンジンの設定には以下のオプションがありますが、リクエスト ヘッダーに関係なく、最初にキャッシュされたコンテンツ タイプが後続のすべてのリクエストで提供されます。

ルール エンジンの設定

ここに画像の説明を入力

これを達成する方法を知っている人はいますか?

前もって感謝します!

4

1 に答える 1