Internet DRAFT - draft-pettersen-cache-context

draft-pettersen-cache-context






Network Working Group                                       Y. Pettersen
Internet-Draft                                        Opera Software ASA
Updates: 2616 (if approved)                                March 6, 2012
Intended status: Standards Track
Expires: September 7, 2012


     A context mechanism for controlling caching of HTTP responses
                    draft-pettersen-cache-context-06

Abstract

   A common problem for sensitive web services is informing the client,
   in a reliable fashion, when a password protected resource is no
   longer valid because the user is logged out of the service.  This is,
   in particular, considered a potential security problem by some
   sensitive services, such as online banking, when the user navigates
   the client's history list, which is supposed to display the resource
   as it was when it was loaded, not as it is the time the user
   navigates to it.

   This document presents a method for collecting such sensitive
   resources into a group, called a "Cache Context", which permits the
   server to invalidate all the resources belonging in the group either
   by direct action, or according to some expiration policy.  The
   context can be configured to invalidate not just the resources, but
   also specific cookies, HTTP authentication credentials and HTTP over
   TLS session information.

Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference



Pettersen               Expires September 7, 2012               [Page 1]

Internet-Draft             HTTP Cache Context                 March 2012


   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on September 7, 2012.

Copyright Notice

   Copyright (c) 2012 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

   This document may contain material from IETF Documents or IETF
   Contributions published or made publicly available before November
   10, 2008.  The person(s) controlling the copyright in some of this
   material may not have granted the IETF Trust the right to allow
   modifications of such material outside the IETF Standards Process.
   Without obtaining an adequate license from the person(s) controlling
   the copyright in such materials, this document may not be modified
   outside the IETF Standards Process, and derivative works of it may
   not be created outside the IETF Standards Process, except to format
   it for publication as an RFC or to translate it into languages other
   than English.





















Pettersen               Expires September 7, 2012               [Page 2]

Internet-Draft             HTTP Cache Context                 March 2012


Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
     1.1.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .  5
   2.  How Cache Contexts work  . . . . . . . . . . . . . . . . . . .  5
     2.1.  What is a Cache Context? . . . . . . . . . . . . . . . . .  5
     2.2.  Life of a Cache Context  . . . . . . . . . . . . . . . . .  6
     2.3.  What happens when a context is discarded?  . . . . . . . .  7
     2.4.  Server role  . . . . . . . . . . . . . . . . . . . . . . .  7
     2.5.  Client role  . . . . . . . . . . . . . . . . . . . . . . .  8
     2.6.  Effects on clients that do not support Cache Contexts  . .  8
   3.  Context Specification Syntax . . . . . . . . . . . . . . . . .  8
     3.1.  ABNF syntax  . . . . . . . . . . . . . . . . . . . . . . .  9
     3.2.  Context directive  . . . . . . . . . . . . . . . . . . . .  9
     3.3.  Discard-Context directive  . . . . . . . . . . . . . . . . 11
     3.4.  Extensions . . . . . . . . . . . . . . . . . . . . . . . . 11
   4.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
     4.1.  No expiration  . . . . . . . . . . . . . . . . . . . . . . 11
     4.2.  With expiration  . . . . . . . . . . . . . . . . . . . . . 12
     4.3.  With server-only cookie  . . . . . . . . . . . . . . . . . 13
     4.4.  With cookiedomain  . . . . . . . . . . . . . . . . . . . . 14
   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 15
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 16
   7.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 16
     7.1.  Informative References . . . . . . . . . . . . . . . . . . 16
     7.2.  Normative References . . . . . . . . . . . . . . . . . . . 16
   Appendix A.  Open Issues . . . . . . . . . . . . . . . . . . . . . 17
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 17























Pettersen               Expires September 7, 2012               [Page 3]

Internet-Draft             HTTP Cache Context                 March 2012


1.  Introduction

   An early problem seen with HTTP was that, since it is inherently
   stateless, there is no direct way to tell that two separate requests
   are related, in particular that the requests originated from the same
   user.  While it is possible to encode the information in URLs or
   queries, these methods are difficult to secure and it is also
   difficult to maintain that information.

   Finally, much of the problem was solved by the introduction of HTTP
   Cookies [RFC6265] and the HTTP Authentication methods [RFC2617].

   One problem remains, though: History list navigation and access to
   temporarily cached resources in web applications handling sensitive
   data, such as online banking.  The user may have logged out of the
   service, or have been logged out automatically, and it is therefore
   difficult for the client to tell whether to display a given resource,
   not display it, or display it only after revalidating.

   A typical use case will be that Alice goes to her online banking
   site, checks her accounts, performs a couple of transactions and,
   then, logs out of the bank.  The bank might want to permit Alice to
   navigate in her browser's history session while she is logged in, for
   example, to recheck how much money is available in her account, but
   prevent her from seeing any such information after she has logged
   out.  The reason is that, if she forgets to close her session (after
   logging out) and then leaves her computer for a minute, Eve might
   sneak over to peek at her colleague's account information by
   navigating the history list in Alice's client.

   Some providers of sensitive web services, for example banks, consider
   failure to revalidate when displaying a cached document, or during
   history navigation, a security problem.  Some of these providers have
   put great efforts into making sure the client is always revalidating
   a page before displaying it, even while navigating history (which is
   quite the opposite of what [RFC2616] sec. 13.13 recommends).  This
   has led to numerous strategies, such as the use of scripting and
   using the "must-revalidate" Cache-Control directive as a revalidate
   indication for history navigation.

   Use of most of these methods not only results in more traffic to the
   websites, but may also reduce the usability of the service.  For
   example, such methods may prevent a user from reviewing, or
   correcting, data entered or presented earlier in the process, or to
   print or save data presented earlier (for example, a receipt),
   because the document is re-rendered differently.

   While it is possible to use cookies and credential information to



Pettersen               Expires September 7, 2012               [Page 4]

Internet-Draft             HTTP Cache Context                 March 2012


   group such documents, these methods are not fine-grained enough to
   distinguish the sensitive parts of a site from the non-sensitive
   parts.  That kind of information is only available to the service
   manager, and potentially the user, but not to the client.

   This document presents a mechanism that permits a webservice to group
   webpages by associating them in a named context, a "Cache Context",
   that can have a specific expiration time or be specifically discarded
   by the service.  When a context is expired, or discarded, this
   expires all documents that the client has that are part of the
   context, meaning that they should either be deleted from the client's
   cache or revalidated before being displayed to the user.

   The mechanism is implemented as an extension to the HTTP Cache-
   Control Header, but will also require access to state information
   about HTTP Cookies and various forms of authentication credentials,
   such as HTTP Authentication credentials and SSL Client Certificate
   session states.

1.1.  Terminology

   HTTP Resource: A resource loaded from a HTTP [RFC2616] or HTTP over
   TLS (HTTPS) [RFC2818] server


2.  How Cache Contexts work

2.1.  What is a Cache Context?

   A Cache Context is a group of HTTP resources served from a specific
   HTTP server, or group of HTTP servers, that are associated with a
   name unique on that server, or within that group of servers.  The
   same name used from a different server, or a server that is not part
   of the group, becomes a different context.  Any given server can use
   multiple contexts.

   An HTTP resource from a server for which a context is defined does
   not become part of the context unless the server explicitly informs
   the client that it is a member of that context.

   Such a group of resources may, for example, consist of all the
   sensitive and password protected pages in a netbank web application,
   but none of the images used when displaying the information.  A
   context may also just contain a group of temporary documents that are
   not intended to be persistently cached.

   A Cache Context can be created with policies that define when it is
   to be discarded, and what actions it should then take, aside from



Pettersen               Expires September 7, 2012               [Page 5]

Internet-Draft             HTTP Cache Context                 March 2012


   invalidating all the resources that are part of the context.  Such
   extra actions may include deleting or invalidating cookies, HTTP
   authentication credentials or SSL session information.

2.2.  Life of a Cache Context

   The Cache Context enters existence the first time the server sends a
   directive that informs the client about the context, and what
   boundaries the context has.  Resources are added to the context each
   time the server sends a new resource with a directive specifying that
   it is part of the context.

   The server (or servers) that can serve resources in a context are
   either the server defining the context (this is the default), or the
   initial server can specify that the context spans the same group of
   servers that will receive a specific HTTP cookie [RFC6265].  HTTP
   cookies can be set by servers to only be returned by the client to
   the server that sent them, or to be sent to all servers within the
   domain which the sending server belongs to (there are some security
   related restrictions to how extensive such domains can be).

   For example, when Alice logs into her online bank, the server tells
   her client that the "onlinebanking" context has been created, and,
   for each successive action she makes to display her account
   statements and filling in forms with payment information, the server
   informs the client that the resulting pages are also part of the
   "onlinebanking" context.

   This continues until the context is discarded, an event that can come
   about as a result of several conditions:

   o  Alice logs out of her online bank, and the server sends a "Discard
      Context" notice to the client.

   o  The server has specified how long the context may live, and, when
      the limit expires, the context is automatically discarded.

   o  The server can also tie the context to an HTTP State Management
      cookie[RFC6265], and when this cookie expires, the context is also
      automatically discarded.

   o  The client SHOULD offer the user the possibility to discard a
      context in the form of a logout button.

   o  The client is shut down.






Pettersen               Expires September 7, 2012               [Page 6]

Internet-Draft             HTTP Cache Context                 March 2012


2.3.  What happens when a context is discarded?

   When a context is discarded, the resources that are part of the
   context are deleted or marked for deletion (e.g., if they cannot be
   deleted immediately due to internal book-keeping).  When a resource
   is marked for deletion, its status in the client's cache will be as
   if it had been received with max-age set to 0 (zero); that is, it has
   expired and cannot be displayed to the user unless its freshness has
   been confirmed by the server after a validation request.  This also
   applies to such documents that would be displayed after the user
   navigated in the browser's history.  Preferably, the resource SHOULD
   NOT be used if the client requests the same URI as that of the
   resource, even conditionally, after the context has been discarded,
   except during history list navigation.

   If the context is associated with an HTTP cookie, discarding the
   context also causes the client to automatically discard the cookie.

   The server can also specify that when a context is discarded, stored
   credentials that are valid for the server(s) that the context spans
   should also be deleted.  Such credentials should include, but should
   not be limited to, HTTP Authentication credentials and SSL Session
   information.  Credentials stored in a client's password management
   utility MUST NOT be discarded during this process.

   Resources gathered in a context MUST NOT be kept persistently cached
   by the client, but MUST be discarded when it shuts down, even if the
   context is still valid.  Please note that this does not prevent a
   client from storing the resource on a disk drive for the duration.
   If a server wants to prevent a resource from being stored on a disk
   drive it MUST indicate this request with the "no-store" Cache-Control
   directive.

   A resource served with an explicit discard context instruction from
   the server is not part of the context and MUST NOT be invalidated,
   and the server SHOULD NOT include sensitive information in such
   resources.

2.4.  Server role

   A service that wants to use Cache Contexts must update the HTTP
   Cache-Control headers sent by each of the resources it wants to make
   part of the context.  Only the entry point(s) into the service will
   need to send a directive with expiration details and other advanced
   information, all other resources need only send a directive
   specifying the name of the context.

   When a service has exit points, such as a logout button, these



Pettersen               Expires September 7, 2012               [Page 7]

Internet-Draft             HTTP Cache Context                 March 2012


   special resources should send a special directive informing
   supporting clients that they must discard the context.

   A server MAY send updated Cache Context directives to the client, and
   need not resend unchanged attributes in such updates.

2.5.  Client role

   The client will parse the Cache-Control headers, and when it
   recognizes the Cache Context directives it will take one of several
   actions:

   o  Create the context as defined, if it does not already exist.

   o  If the server sends updated attributes for the context, update the
      relevant attributes without changing other attributes.

   o  Add the resource to the context, unless the context is being
      discarded as a result of the current directive.

   o  If the directive specifies that the context must be discarded
      immediately, the client MUST proceed to invalidate all the
      resources contained in the context, as specified above.

   The client MUST maintain a list of active contexts for each server or
   group of servers, their policies and which resources are associated
   with them.

   A server MAY specify that a resource belongs in two different
   contexts by sending two directives in the same response.  In such
   cases the resource MUST be invalidated when the first context is
   discarded.

2.6.  Effects on clients that do not support Cache Contexts

   All the information about the Cache Contexts and actions on them are
   contained in new HTTP Cache-Control directives.  Clients that do not
   recognize these directives will ignore them.  They will follow the
   Cache-Control directives they recognize, and otherwise act as they
   would if the Cache Contexts did not exist.


3.  Context Specification Syntax








Pettersen               Expires September 7, 2012               [Page 8]

Internet-Draft             HTTP Cache Context                 March 2012


3.1.  ABNF syntax

   This ABNF has the same syntax as is used in [RFC2616], with the
   addition of Incremental Alternatives from [RFC5234] section 3.3.

   This syntax expands the cache-response-directive part of the Cache-
   Control header ABNF in RFC 2616 sec. 14.9.
   cache-response-directives =/
          "context" "=" context-name *[ ";" context-attributes]
        | "discard-context" "=" context-name *[; context-name]

   context-name = token

   context-attributes =
          "max-age" ":" delta-seconds
        | "max-idle" ":" delta-seconds
        | "cookie" ":" token
        | "authenticated"
        | "include-credentials"
        | "no-persistent-history"
        | extension-attributes

   extension-attributes = token [":" token]

   delta-seconds =  1*DIGIT

3.2.  Context directive

   The Context directive MUST be included with every response that is
   included in a context.  It always starts with a context-name, which
   MUST be unique within the given service.

   The context-name, which is case-insensitive, is the only required
   field in the directive.  All other attributes are optional, and need
   only be specified when the attribute is updated.

   By default, a given context on one server is not associated with a
   context by the same name for another server, but if a group of
   servers share a common HTTP cookie, they can participate in a common
   context by using the same name.

   Additionally, the directive may contain one or more context-
   attributes that specify how the context as well as additional
   information should be handled by the client.  These attributes need
   not be sent with every response, but when an attribute is sent with a
   later response, it will update the context with the new information,
   and any previous information for that attribute will be overwritten.




Pettersen               Expires September 7, 2012               [Page 9]

Internet-Draft             HTTP Cache Context                 March 2012


   max-age  This attribute indicates how many seconds the context should
      be kept alive.  A value of zero (0) means that the context should
      be discarded immediately.  A server may send this directive to
      extend the lifetime of the context, e.g when the context nears the
      end of its lifetime.  If this attribute is not defined, the
      context may live until the client is shut down, or a discard event
      is received by the client.

   max-idle  This attribute indicates how many seconds the context
      should be kept alive after the last time a resource in the context
      was accessed.  If this attribute is not defined, or the value is
      zero (0), the context may live until the client is shut down, or a
      discard event is received by the client.

   cookie  This attribute names the most specific HTTP State Management
      Cookie [RFC6265] visible to the resource sending when this
      attribute is received by the client.  Cookies received and
      accepted in the current response MAY be considered as part of
      evaluating this attribute.  The named cookie is used for three
      purposes.  First, its expiration date also becomes one of the
      expiration dates of the context (an earlier max-age or max-idle
      takes precedence), and if the server deletes the cookie, it
      automatically deletes the context as well.  Second, if a cookie is
      valid across multiple hosts (that is, a domain), the given context
      is also valid across the same hosts.  Third, if the context
      expires or is discarded before the cookie expires, the named
      cookie MUST also be deleted when the context is discarded.
      Multiple cookies may be defined by the server.  By default, the
      context is not assiciated with a cookie.

   authenticated  This attribute specifies that the context shall be
      valid across the domain of the HTTP authentication credential
      currently valid for the resource.  The domain MUST at least
      include the entire server, but multiple hosts may be included if
      it is supported by the authentication mechanism, as for example
      Digest Authentication [RFC2617] do.  When the context is
      discarded, the authentication credential is also discarded.  If
      the credential is invalidated or destroyed, the context must also
      be discarded.  By default, the context is not associated with an
      authentication credential.

   include-credentials  This attribute informs the client that when this
      context is discarded it MUST also destroy all HTTP Authorization
      credentials, SSL/TLS Client Certificate authenticated sessions,
      and other credentials that are valid for the resources that are
      part of the context, thus logging the user out of the service.  By
      default, credentials are not included when discarding a context.




Pettersen               Expires September 7, 2012              [Page 10]

Internet-Draft             HTTP Cache Context                 March 2012


   no-persistent-history  This attribute informs the client that it
      SHOULD NOT remember resources that are part of this context as
      part of a persistent history mechanism.  That is, the client
      SHOULD maintain a history list in the document window or "tab"
      viewed by the user (as described in [RFC2616] Section 13.13) , but
      it SHOULD NOT keep any information about the URLs visited for a
      persistent browsing history.  By default, the client MAY remember
      the used resources as part of a persistent history mechanism.

   delta-seconds  All periods used in the Cache Context attributes are
      measured in seconds.

3.3.  Discard-Context directive

   A server can send this directive when it wants the client to
   immediately discard the named context(s) (which includes the extra
   actions specified in Section 2.3 when specified for the context).

   Multiple context names separated by ";" can be specified in a single
   directive, or multiple directives can be used.

3.4.  Extensions

   Extension attribute names SHOULD be documented in an RFC.


4.  Examples

4.1.  No expiration






















Pettersen               Expires September 7, 2012              [Page 11]

Internet-Draft             HTTP Cache Context                 March 2012


   Request-URI: http://www.example.com/initial_page

   Response:
   Cache-Control: context=simplecontext

   Request-URI: http://www.example.com/page2

   Response:
   Cache-Control: context=simplecontext

   Request-URI: http://www.example.com/page3

   Response:
   Cache-Control: context=simplecontext

   Request-URI: http://www.example.com/page4

   Response:
   Cache-Control: max-age=3600

   Request-URI: http://www.example.com/final_page

   Response:
   Cache-Control: discard-context=simplecontext



   This example loads 3 resources, "initial_page", "page2" and "page3",
   as part of the Cache Context "simplecontext".  By default, this
   context lives until the client is shut down.  In this case, however,
   the context is discarded by the response to the request for
   "final_page".  After the context has been discarded, all future
   attempts to view "initial_page", "page2" or "page3" will result in an
   "If-Modified-Since" validation request to the server, or a completely
   new request, because the responses are no longer valid.

   "Page4" is not part of the context, and is not discarded by the
   "final_page" action, and no "If-Modified-Since" request will be sent
   for this resource until 3600 seconds (1 hour) after it was originally
   loaded.

4.2.  With expiration









Pettersen               Expires September 7, 2012              [Page 12]

Internet-Draft             HTTP Cache Context                 March 2012


   Request-URI: http://www.example.com/initial_page

   Response:
   Cache-Control: context=expirecontext;max-age=900



   Request-URI: http://www.example.com/page2

   Response:
   Cache-Control: context=expirecontext



   Request-URI: http://www.example.com/page3

   Response:
   Cache-Control: context=expirecontext



   This example loads 3 resources, "initial_page", "page2" and "page3",
   as part of the Cache Context "expirecontext".  By default, this
   context lives for at most 15 minutes (900 seconds).  After the
   context has been discarded (in this case, after 15 minutes), all
   future attempts to view "initial_page", "page2" or "page3" will
   result in an "If-Modified-Since" validation request to the server, or
   a completely new request, because the responses are no longer valid.

4.3.  With server-only cookie





















Pettersen               Expires September 7, 2012              [Page 13]

Internet-Draft             HTTP Cache Context                 March 2012


   Defined cookie (server only):
      ExampleSession=UserId; max-age=900; domain=www.example.com


   Request-URI: http://www.example.com/initial_page

   Response:
   Cache-Control: context=cookiecontext;cookie=ExampleSession



   Request-URI: http://www.example.com/page2

   Response:
   Cache-Control: context=cookiecontext


   Request-URI: http://www.example.com/page3

   Response:
   Cache-Control: context=cookiecontext



   Request-URI: http://www.example.com/final_page

   Response:
   Cache-Control: discard-context=cookiecontext



   This example loads 3 resources, "initial_page", "page2" and "page3",
   as part of the Cache Context "cookiecontext" which is associated with
   the cookie "ExampleSession".  By default, this context lives until
   the cookie expires 15 minutes (900 seconds) after it was set.  In
   this case, however, the context is discarded by the response to the
   request for "final_page".  After the context has been discarded, the
   cookie "ExampleSession" no longer exists even if it was not yet
   expired, and all future attempts to view "initial_page", "page2" or
   "page3" will result in an "If-Modified-Since" validation request to
   the server, or a completely new request, because the responses are no
   longer valid.

4.4.  With cookiedomain







Pettersen               Expires September 7, 2012              [Page 14]

Internet-Draft             HTTP Cache Context                 March 2012


   Defined cookie:
      ExampleDomainSession=UserId; max-age=900; domain=.example.com

   Request-URI: http://www.example.com/initial_page

   Response:
   Cache-Control: context=domaincontext;cookie=ExampleSession


   Request-URI: http://server2.example.com/page2

   Response:
   Cache-Control: context=domaincontext


   Request-URI: http://server3.example.com/page3

   Response:
   Cache-Control: context=domaincontext

   Request-URI: http://final.example.com/final_page

   Response:
   Cache-Control: discard-context=domaincontext


   This example loads 3 resources, "initial_page", "page2" and "page3"
   from different servers, as part of the Cache Context "domaincontext"
   which is associated with the cookie "ExampleDomainSession" which is
   sent to the entire example.com domain.  This causes "domaincontext"
   to apply to all servers in the example.com domain, too.  By default,
   this context lives until the cookie expires 15 minutes (900 seconds)
   after it was set.  In this case, however, the context is discarded by
   the response to the request for "final_page".  After the context has
   been discarded, the cookie "ExampleDomainSession" no longer exists
   even if it was not yet expired, and all future attempts to view
   "initial_page", "page2" or "page3" will result in an "If-Modified-
   Since" validation request to the server, or a completely new request,
   because the responses are no longer valid.


5.  IANA Considerations

   This document makes no request of IANA.

   Note to RFC Editor: this section may be removed on publication as an
   RFC.




Pettersen               Expires September 7, 2012              [Page 15]

Internet-Draft             HTTP Cache Context                 March 2012


6.  Security Considerations

   If two independent web applications that use the same name for their
   contexts are hosted on the same server, or within the domain covered
   by one or both of the contexts, they are likely to interfere with
   each other.  This can happen if the user uses both applications while
   both contexts are valid, possibly causing some loss of functionality
   and information if a context is discarded, or prolonged exposure of
   information if the session is extended.  Such interference can only
   be avoided by choosing context names that are not shared among
   independent web applications.

   When using the Cookie attribute, which expands the context to a
   cookie's domain, this specification relies on the same security
   safeguards that are used by the client when accepting the cookie in
   order to avoid interfering with web applications in other services
   that are using the same context name.  Given the wide variety of
   domain name hierarchies used by TLD administrators, it is presently
   possible, unless prevented by client specific heuristics, for a
   server to share a cookie with all servers within a registry-like part
   of a TLD, such as the "co.uk" Domain Name hierarchy.  This kind of
   interference may also occur within smaller domain name segments.

   A possible method to avoid or limit such interference could be to
   require clients to perform an evaluation of the context directive's
   cookie specification from the resource's environment, which might
   associate it with a different cookie.  Such an evaluation would most
   likely result in undesirable processing overhead, and is therefore
   not included in this specification.


7.  References

7.1.  Informative References

   [RFC2818]  Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.

7.2.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC2617]  Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
              Leach, P., Luotonen, A., and L. Stewart, "HTTP



Pettersen               Expires September 7, 2012              [Page 16]

Internet-Draft             HTTP Cache Context                 March 2012


              Authentication: Basic and Digest Access Authentication",
              RFC 2617, June 1999.

   [RFC5234]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
              Specifications: ABNF", STD 68, RFC 5234, January 2008.

   [RFC6265]  Barth, A., "HTTP State Management Mechanism", RFC 6265,
              April 2011.


Appendix A.  Open Issues

   Should the client indicate support for Cache Contexts?  Is it
   necessary to do so?  If so, how should support be indicated?  A
   possiblity is an HTTP header with a directive indicating support.

   Should the client indicate that it has accepted a particular context
   and is using it?  If so, how should it indicate it?  Possible
   solution: The above mentioned header directive could contain a list
   of active contexts.

   Should the client, when automatically discarding a context, replace
   the viewed document with a "you have been logged out of the service"
   document?  Or should the last viewed page continue to be displayed?
   If the document is replaced, how should this situation be handled
   when a server specifies an unreasonably short expiration time?

   How should a client interpret non-context Cache-Control directives in
   the same header?  Given that such directives are likely intended to
   place more restrictive non-context expiration policies on the
   resource than is necessary for clients that do support Cache
   Contexts, the best solution may be that clients supporting Cache
   Contexts should ignore at least the "no-cache", "max-age=0" and
   "must-revalidate" directives for resources that are part of a
   context, all of which are implied when the cache-context is
   discarded.

   How should responses to requests using methods that have side
   effects, such as POST, be handled after a context has been discarded?
   Such responses should most likely not be revalidated automatically.
   The best option may be to require the client to replace the resource
   with an information message about the resource not being available
   anymore.








Pettersen               Expires September 7, 2012              [Page 17]

Internet-Draft             HTTP Cache Context                 March 2012


Author's Address

   Yngve N. Pettersen
   Opera Software ASA
   Waldemar Thranes gate 98
   N-0175 OSLO,
   Norway

   Email: yngve@opera.com










































Pettersen               Expires September 7, 2012              [Page 18]