Mise en cache de proxy avec des requêtes de repos authentifiées

envisagez le scénario suivant:

  • j'ai RESTful URL / articles qui renvoie la liste des articles
  • utilisateur de fournir ses informations d'identification à l'aide de l'Autorisation d'en-tête HTTP à chaque requête
  • articles peuvent varier d'un utilisateur à l'utilisateur en fonction de ses privilèges

est-il possible d'utiliser le cache proxy, comme Squid, pour ce scénario? Proxy ne verra que URL / articles de sorte qu'il peut retourner la liste des articles seulement valide pour le premier utilisateur qui produit le cache. Les autres utilisateurs qui demandent des URL / articles peuvent voir des articles auxquels ils n'ont pas accès, ce qui n'est évidemment pas souhaitable.

dois-je lancer mon propre cache ou un logiciel proxy de cache peut être configuré pour baser son cache sur L'en-tête HTTP D'autorisation?

25
demandé sur Peter 2009-11-09 14:27:37
la source

2 ответов

une possibilité d'essayer est d'utiliser le Vary: Authorization en-tête de réponse pour demander aux caches en aval de faire attention à la mise en cache en modifiant les documents mis en cache en fonction de la requête Authorization en-tête.

vous pouvez déjà utiliser cet en-tête si vous utilisez la réponse-compression. L'utilisateur demande une ressource avec l'en-tête Accept-Encoding: gzip, deflate; si le serveur est configuré pour supporter la compression, alors la réponse pourrait venir avec les en-têtes Content-Encoding: gzip et Vary: Accept-Encoding déjà.

29
répondu yfeldblum 2009-11-09 16:48:06
la source

By the HTTP / 1.1 RFC section 14.8 (http://tools.ietf.org/html/rfc2616#section-14.8):

  When a shared cache (see section 13.7) receives a request
  containing an Authorization field, it MUST NOT return the
  corresponding response as a reply to any other request, unless one
  of the following specific exceptions holds:

  1. If the response includes the "s-maxage" cache-control
     directive, the cache MAY use that response in replying to a
     subsequent request. But (if the specified maximum age has
     passed) a proxy cache MUST first revalidate it with the origin
     server, using the request-headers from the new request to allow
     the origin server to authenticate the new request. (This is the
     defined behavior for s-maxage.) If the response includes "s-
     maxage=0", the proxy MUST always revalidate it before re-using
     it.

  2. If the response includes the "must-revalidate" cache-control
     directive, the cache MAY use that response in replying to a
     subsequent request. But if the response is stale, all caches
     MUST first revalidate it with the origin server, using the
     request-headers from the new request to allow the origin server
     to authenticate the new request.

  3. If the response includes the "public" cache-control directive,
     it MAY be returned in reply to any subsequent request.
10
répondu Freek 2014-08-26 12:50:08
la source

Autres questions sur