rfc2295.txt

来自「中、英文RFC文档大全打包下载完全版 .」· 文本 代码 · 共 1,711 行 · 第 1/5 页

TXT
1,711
字号
   An algorithm with the version number X.Y, with Y>0, MUST be downwards   compatible with all algorithms from X.0 up to X.Y.  Downwards   compatibility means that, if supplied with the same information, the   newer algorithm MUST make the same choice, or a better choice, as the   old algorithm.  There are no compatibility requirements between   algorithms with different major version numbers.8  Content negotiation status codes and headers   This specification adds one new HTTP status code, and introduces six   new HTTP headers.  It also extends the semantics of an existing   HTTP/1.1 header.8.1 506 Variant Also Negotiates   The 506 status code indicates that the server has an internal   configuration error: the chosen variant resource is configured to   engage in transparent content negotiation itself, and is therefore   not a proper end point in the negotiation process.Holtman & Mutz                Experimental                     [Page 25]RFC 2295            Transparent Content Negotiation           March 19988.2 Accept-Features   The Accept-Features request header can be used by a user agent to   give information about the presence or absence of certain features in   the feature set of the current request.  Servers can use this   information when running a remote variant selection algorithm.      Note: the name `Accept-Features' for this header was chosen      because of symmetry considerations with other Accept- headers,      even though the Accept-Features header will generally not contain      an exhaustive list of features which are somehow `accepted'.  A      more accurate name of this header would have been `Feature-Set-      Info'.       Accept-Features = "Accept-Features" ":"                   #( feature-expr *( ";" feature-extension ) )       feature-expr = [ "!" ] ftag                    | ftag ( "=" | "!=" ) tag-value                    | ftag "=" "{" tag-value "}"                    | "*"       feature-extension = token [ "=" ( token | quoted-string ) ]   No feature extensions are defined in this specification.  An example   is:       Accept-Features: blex, !blebber, colordepth={5}, !screenwidth,                  paper = A4, paper!="A2", x-version=104, *   The different feature expressions have the following meaning:      ftag       ftag is present      !ftag      ftag is absent      ftag=V     ftag is present with the value V      ftag!=V    ftag is present, but not with the value V      ftag={V}   ftag is present with the value V, and not with any                 other values      *          the expressions in this header do not fully describe                 the feature set: feature tags not mentioned in this                 header may also be present, and, except for the case                 ftag={V}, tags may be present with more values than                 mentioned.Holtman & Mutz                Experimental                     [Page 26]RFC 2295            Transparent Content Negotiation           March 1998   Absence of the Accept-Features header in a request is equivalent to   the inclusion of      Accept-Features: *   By using the Accept-Features header, a remote variant selection   algorithm can sometimes determine the truth value of a feature   predicate on behalf of the user agent.  For example, with the header       Accept-Features: blex, !blebber, colordepth={5}, !screenwidth,                  paper = A4, paper!="A2", x-version=104, *   the algorithm can determine that the following predicates are true:       blex, colordepth=[4-], colordepth!=6, colordepth, !screenwidth,       paper=A4, colordepth=[4-6]   and that the following predicates are false:       !blex, blebber, colordepth=6, colordepth=foo, !colordepth,       screenwidth, screenwidth=640, screenwidth!=640,   but the truth value of the following predicates cannot be   determined:       UA-media=stationary, UA-media!=screen, paper!=a0,       x-version=[100-300], x-version=[200-300], x-version=99,       UA-media=screen, paper=A0, paper=a4, x-version=[100-199], wuxta8.3 Alternates   The Alternates response header is used to convey the list of variants   bound to a negotiable resource.  This list can also include   directives for any content negotiation process.  If a response from a   transparently negotiable resource includes an Alternates header, this   header MUST contain the complete variant list bound to the negotiable   resource.  Responses from resources which do not support transparent   content negotiation MAY also use Alternates headers.       Alternates = "Alternates" ":" variant-list       variant-list = 1#( variant-description                        | fallback-variant                        | list-directive )       fallback-variant = "{" <"> URI <"> "}"       list-directive = ( "proxy-rvsa" "=" <"> 0#rvsa-version <"> )Holtman & Mutz                Experimental                     [Page 27]RFC 2295            Transparent Content Negotiation           March 1998                        | extension-list-directive       extension-list-directive =                        token [ "=" ( token | quoted-string ) ]   An example is     Alternates: {"paper.1" 0.9 {type text/html} {language en}},                 {"paper.2" 0.7 {type text/html} {language fr}},                 {"paper.3" 1.0 {type application/postscript}                     {language en}},                 proxy-rvsa="1.0, 2.5"   Any relative URI specified in a variant-description or fallback-   variant field is relative to the request-URI.  Only one fallback-   variant field may be present.  If the variant selection algorithm of   the user agent finds that all described variants are unacceptable,   then it SHOULD choose the fallback variant, if present, as the best   variant.  If the user agent computes the overall quality values of   the described variants, and finds that several variants share the   highest value, then the first variant with this value in the list   SHOULD be chosen as the best variant.   The proxy-rvsa directive restricts the use of remote variant   selection algorithms by proxies. If present, a proxy MUST ONLY use   algorithms which have one of the version numbers listed, or have the   same major version number and a higher minor version number as one of   the versions listed.  Any restrictions set by proxy-rvsa come on top   of the restrictions set by the user agent in the Negotiate request   header.  The directive proxy-rvsa="" will disable variant selection   by proxies entirely.  Clients SHOULD ignore all extension-list-   directives they do not understand.   A variant list may contain multiple differing descriptions of the   same variant.  This can be convenient if the variant uses conditional   rendering constructs, or if the variant resource returns multiple   representations using a multipart media type.8.4 Negotiate   The Negotiate request header can contain directives for any content   negotiation process initiated by the request.      Negotiate = "Negotiate" ":" 1#negotiate-directive      negotiate-directive = "trans"                          | "vlist"                          | "guess-small"Holtman & Mutz                Experimental                     [Page 28]RFC 2295            Transparent Content Negotiation           March 1998                          | rvsa-version                          | "*"                          | negotiate-extension      negotiate-extension = token [ "=" token ]   Examples are      Negotiate: 1.0, 2.5      Negotiate: *   The negotiate directives have the following meaning      "trans"        The user agent supports transparent content negotiation for        the current request.      "vlist"        The user agent requests that any transparently negotiated        response for the current request includes an Alternates        header with the variant list bound to the negotiable resource.        Implies "trans".      "guess-small"        The user agent allows origin servers to run a custom algorithm        which guesses the best variant for the request, and to return        this variant in a choice response, if the resulting choice        response is smaller than or not much larger than a list        response.  The definition of `not much larger' is left to        origin server heuristics.  Implies "vlist" and "trans".      rvsa-version        The user agent allows origin servers and proxies to run the        remote variant selection algorithm with the indicated version        number, or with the same major version number and a higher        minor version number.  If the algorithm has sufficient        information to choose a best, neighboring variant, the origin        server or proxy MAY return a choice response with this        variant.  Implies "trans".      "*"        The user agent allows origin servers and proxies to run any        remote variant selection algorithm.  The origin server may        even run algorithms which have not been standardized.  If the        algorithm has sufficient information to choose a best,        neighboring variant, the origin server or proxy MAY return a        choice response with this variant.  Implies "trans".Holtman & Mutz                Experimental                     [Page 29]RFC 2295            Transparent Content Negotiation           March 1998   Servers SHOULD ignore all negotiate-directives they do not   understand.  If the Negotiate header allows a choice between multiple   remote variant selection algorithms which are all supported by the   server, the server SHOULD use some internal precedence heuristics to   select the best algorithm.8.5 TCN   The TCN response header is used by a server to signal that the   resource is transparently negotiated.       TCN = "TCN" ":" #( response-type                        | server-side-override-directive                        | tcn-extension )       response-type = "list" | "choice" | "adhoc"       server-side-override-directive = "re-choose" | "keep"       tcn-extension = token [ "=" ( token | quoted-string ) ]   If the resource is not transparently negotiated, a TCN header MUST   NOT be included in any response.  If the resource is transparently   negotiated, a TCN header, which includes the response-type value of   the response, MUST be included in every response with a 2xx status   code or any 3xx status code, except 304, in which it MAY be included.   A TCN header MAY also be included, without a response-type value, in   other responses from transparently negotiated resources.   A server-side override directive MUST be included if the origin   server performed a server-side override when choosing the response.   If the directive is "re-choose", the server MUST include an   Alternates header with the variant bound to the negotiable resource   in the response, and user agent SHOULD use its internal variant   selection algorithm to choose, retrieve, and display the best variant   from this list.  If the directive is "keep" the user agent SHOULD NOT   renegotiate on the response, but display it directly, or act on it   directly if it is a redirection response.   Clients SHOULD ignore all tcn-extensions they do not understand.8.6 Variant-Vary   The Variant-Vary response header can be used in a choice response to   record any vary information which applies to the variant data (the   entity body combined with some of the entity headers) contained in   the response, rather than to the response as a whole.Holtman & Mutz                Experimental                     [Page 30]RFC 2295            Transparent Content Negotiation           March 1998         Variant-Vary  = "Variant-Vary" ":" ( "*" | 1#field-name )   Use of the Variant-Vary header is discussed in section 10.2.9  Cache validators   To allow for correct and efficient caching and revalidation of   negotiated responses, this specification extends the caching model of   HTTP/1.1 [1] in various ways.   This specification does not introduce a `variant-list-max-age'   directive which explicitly bounds the freshness lifetime of a cached   variant list, like the `max-age' Cache-Control directive bounds the   freshness lifetime of a cached response.  However, this specification   does ensure that a variant list which is sent at a time T by the   origin server will never be re-used without revalidation by   semantically transparent caches after the time T+M.  This M is the   maximum of all freshness lifetimes assigned (using max-age directives   or Expires headers) by the origin server to      a. the responses from the negotiable resource itself, and      b. the responses from its neighboring variant resources   If 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?