2016-10-20 12 views
0

現在、REST APIを構築中です。私が作成しているリソースの多くは、誰がリソースにアクセスしているかにかかわらず常に同一です。いくつかは、Vary: Authorizationヘッダを持っていません。あなたが認証されていない場合は、401応答を取得します認証されたREST APIのHTTPキャッシュ

  1. 2つの例外があります。

  2. アクセス権のない一部のリソースに対して403の応答が表示される場合があります。

私の質問は、このシナリオでは、キャッシュを正しく設定することができますか?特に、メインサービスの負荷を軽減するために、nginx、varnish、haproxyなどのリバースプロキシを使用したいと考えています。

この問題の解決策はありますか?

+0

異なるリソースのURIは一致しないURIと一致しますか?例えばパブリック情報、一部のユーザーにしか表示されない情報、Joeにのみ表示される情報を返す/ user/joeがありますか? –

+0

@Nicholas多分私ははっきりとはっきりしていなかったかもしれませんが、ほとんどのリソースではこれはそうではなく、そうでない人は「Vary:Authorization」を持つでしょう。私はそれだけではないリソースに興味があります。それらは常に200 OKに対して同じ応答を持つか、または401/403です。 – Evert

答えて

1

Vary: Authorizationは不要です。承認付きリクエストへの応答は自動的にプライベートであり、共有キャッシュによってキャッシュされません。

Cache-Control: publicを送信してこれを無効にすることができます。その応答は通常のルールを使用してキャッシュできます。

ただし、これらの応答を認証したままにしたい場合は、認証を行う必要があります。また、Cache-Control: no-cacheを送信することでこれを行うことができます。これにより、ストアドレスポンスを提供する前にキャッシュが原点で確認されます。

あなたはだけは、リバースプロキシを持つようにしたい場合(例えば、ワニスは、nginxの)やるキャッシュは、それがキャッシュからの応答を提供し、「エッジ」に認証を課すように構成されているの方法を持っている可能性があります要求に適切な認証がある場合詳細については、ドキュメントを確認してください。

+0

ありがとう!ソースからまっすぐに答えを得るには常に素晴らしい:) – Evert