2015-03-03 27 views
8

Biorąc pod uwagę odpowiedź serwera WWW, który zawiera nagłówek Authorization zgodnie ze specyfikacją OAuth, buforowanie HTTP nie przydaje się?Buforowanie HTTP z autoryzacją

W tym przypadku buforowanie HTTP drugie żądanie zwróci buforowaną odpowiedź dla pierwszego użytkownika. Nie stanowi to problemu dla treści, które są ogólne dla wszystkich użytkowników, ale dla udostępnianej pamięci podręcznej udzielanie odpowiedzi innym użytkownikom jest niewłaściwe.

Podobnie, jeśli użyjemy nagłówka Vary i zmieni się on o Authorization, oznacza to, że nasza pamięć podręczna będzie przechowywać buforowaną kopię na token, który z pewnością pokonuje cel buforowania HTTP. Lokalna pamięć podręczna przeglądarek (prywatna) działałaby dobrze, ale nadal oznaczałoby to żądanie od każdego użytkownika co najmniej raz na sesję.

Edit

Obsługa w kwestii wymaga autoryzacji dla wszystkich żądań, jednak na podstawie tego co czytałem, służąc odpowiedzi ze wspólnej pamięci podręcznej, które zawierają nagłówki autoryzacji nie powinny być wykonywane, chyba że koniecznie trzeba revalidate, publiczny i s-maxage są obecne.

Moje pytanie brzmi więc, że biorąc pod uwagę API, które ma zarówno ogólne (odpowiedzi takie same dla wszystkich użytkowników), jak i odpowiedzi specyficzne dla użytkownika, buforowanie jest możliwe? Posiadanie s-maxage i publicznych nagłówków, ale nagłówek autoryzacji oznacza, że ​​pamięć podręczna rozwiąże odpowiedź UserA na UserB, UserC i tak dalej, jeśli poprawnie podążam za RFC.

+0

Czy możesz zaktualizować sposób buforowania teraz dla autoryzowanych zasobów? – Lijo

Odpowiedz

4

Zobacz http://greenbytes.de/tech/webdav/rfc7234.html#response.cacheability:

„cache NIE przechowywać odpowiedź na każde żądanie, chyba że: Metoda żądania jest rozumiane przez cache i zdefiniowane jako buforowalny i ... pole nagłówka Authorization (patrz sekcja 4.2 [RFC7235]) nie pojawia się w żądaniu, ... "

+0

Jestem zdezorientowany. Zobacz http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.8 punkt 1. Korzystanie z ustawień pamięci podręcznej s-max-age ustawia się wraz z maks. Wiekiem. – Finglas

+1

RFC 2616 jest przestarzały. Proszę przeczytać całą sekcję 3, w szczególności 3.2. –

+0

Dzięki za to @Julian. Zaktualizowałem moje pytanie, aby było bardziej szczegółowe, ponieważ nadal nie jestem w 100% jasne, jak to działa. – Finglas