1. ホーム
  2. cors

[解決済み】不透明な応答とは何ですか、そしてそれはどのような目的ですか?

2022-04-13 22:37:11

質問

を試してみました。 fetch 古いサイトのURLを入力すると、エラーが発生しました。

Fetch API cannot load http://xyz.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://abc' is therefore not allowed access.
If an opaque response serves your needs, set the request's mode to 'no-cors'
to fetch the resource with CORS disabled.

メッセージを理解し、不透明なレスポンスを返すリクエストをやってみた。

fetch("http://xyz", {'mode': 'no-cors'})

よし、これで動いた...だが、読めない。

では、不透明な応答は何のためにあるのでしょうか?

どのように解決するのか?

サービスワーカーが不可知論的なキャッシュとして機能するケースを考えてみましょう。あなたの唯一の目標は、ネットワークから取得するのと同じリソースを、より速く提供することです。もちろん、すべてのリソースがオリジンの一部であることを保証することはできません(たとえば、CDNから提供されるライブラリーを考えてみてください)。サービスワーカーにはネットワークの応答を変更する可能性があるので、応答の内容やヘッダ、結果にさえも関心がないことを保証する必要があります。ブラックボックスとしてのレスポンスにしか興味がなく、それをキャッシュしてより速く提供する可能性があります。

これは { mode: 'no-cors' } は、そのために作られました。