2016-02-12 3 views
0

Предположим, что я предоставляю услугу REST (через HTTPS), которая использует идентификацию токена на предъявителя (JWT) и отвечает на запрос GET заголовком Cache-Control: private.Cache-Control частный в режиме киоска

Теперь предположим, что мое приложение используется в режиме киоска (несколько пользователей используют ту же самую сессию браузера, что и пользователь ОС, думают интернет-кафе или что-то в этом роде). Пользователь1 делает аутентифицированный запрос ресурсу.

GET /api/resource 
Authorization: bearer <token1> 

Реакция начинается с:.

HTTP/1.1 200 OK 
Cache-Control: private 

Теперь User1 признаки из моего приложения и знаки user2 в браузере делает запрос к одному ресурсу от ее имени (но с другим JWT маркер).

GET /api/resource 
Authorization: bearer <token2> 

Теперь мой вопрос, будет ли браузер рассмотреть возможность выполнения этого из кэша, поскольку это тот же самый запрос от того же пользователя ОС? Или браузер учитывал бы значение Authorization в этом решении?

Если первый, будет заголовок Vary: Authorization в исходном ответе на изменение этого поведения.

+1

Обратите внимание, что если вы не установили 'Cache-Control: no-store', личная информация из сеанса пользователя останется на клиенте. – SilverlightFox

ответ

2

В ответ на RFC 2616, Section 14.9.1 ответный заголовок Cache-Control: private действительно означает, что ваши пользователи с несколькими киосками, использующие одну и ту же сессию браузера, получат одинаковый кешированный ответ.

И да, добавление заголовка ответа Vary: Authorization поможет, как указано Section 13.6 RFC 2616; он сообщает кешу сохранять/выбирать из разных «представлений» ресурса на основе заголовков запросов, перечисленных в значении заголовка Vary.

Надеюсь, это поможет!