rfc2296.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 732 行 · 第 1/2 页
TXT
732 行
Network Working Group K. Holtman
Request for Comments: 2296 TUE
Category: Experimental A. Mutz
Hewlett-Packard
March 1998
HTTP Remote Variant Selection Algorithm -- RVSA/1.0
Status of this Memo
This memo defines an Experimental Protocol for the Internet
community. It does not specify an Internet standard of any kind.
Discussion and suggestions for improvement are requested.
Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
ABSTRACT
HTTP allows web site authors to put multiple versions of the same
information under a single URL. Transparent content negotiation is a
mechanism for automatically selecting the best version when the URL
is accessed. A remote variant selection algorithm can be used to
speed up the transparent negotiation process. This document defines
the remote variant selection algorithm with the version number 1.0.
TABLE OF CONTENTS
1 Introduction...............................................2
2 Terminology and notation...................................2
3 The remote variant selection algorithm.....................2
3.1 Input....................................................2
3.2 Output...................................................3
3.3 Computing overall quality values.........................3
3.4 Definite and speculative quality values..................5
3.5 Determining the result...................................6
4 Use of the algorithm.......................................7
4.1 Using quality factors to rank preferences................7
4.2 Construction of short requests...........................8
4.2.1 Collapsing Accept- header elements.....................8
4.2.2 Omitting Accept- headers...............................9
4.2.3 Dynamically lengthening requests.......................9
4.3 Differences between the local and the remote algorithm..10
4.3.1 Avoiding major differences............................11
4.3.2 Working around minor differences......................11
Holtman & Mutz Experimental [Page 1]
RFC 2296 HTTP RVSA/1.0 March 1998
5 Security and privacy considerations.......................11
6 Acknowledgments...........................................12
7 References................................................12
8 Authors' Addresses........................................12
9 Full Copyright Statement..................................13
1 Introduction
HTTP allows web site authors to put multiple versions (variants) of
the same information under a single URL. Transparent content
negotiation [2] is a mechanism for automatically selecting the best
variant when the URL is accessed. A remote variant selection
algorithm can be used by a HTTP server to choose a best variant on
behalf of a negotiating user agent. The use of a remote algorithm
can speed up the transparent negotiation process by eliminating a
request-response round trip.
This document defines the remote variant selection algorithm with the
version number 1.0. The algorithm computes whether the Accept-
headers in the request contain sufficient information to allow a
choice, and if so, which variant must be chosen.
2 Terminology and notation
This specification uses the terminology and notation of the HTTP
transparent content negotiation specification [2].
3 The remote variant selection algorithm
This section defines the remote variant selection algorithm with the
version number 1.0. To implement this definition, a server MAY run
any algorithm which gives equal results.
Note: According to [2], servers are always free to return a list
response instead of running a remote algorithm. Therefore,
whenever a server may run a remote algorithm, it may also run a
partial implementation of the algorithm, provided that the partial
implementation always returns List_response when it cannot compute
the real result.
3.1 Input
The algorithm is always run for a particular request on a
particular transparently negotiable resource. It takes the
following information as input.
1. The variant list of the resource, as present in the Alternates
header of the resource.
Holtman & Mutz Experimental [Page 2]
RFC 2296 HTTP RVSA/1.0 March 1998
2. (Partial) Information about capabilities and preferences of the
user agent for this particular request, as given in the Accept-
headers of the request.
If a fallback variant description
{"fallback.html"}
is present in the Alternates header, the algorithm MUST interpret it
as the variant description
{"fallback.html" 0.000001}
The extremely low source quality value ensures that the fallback
variant only gets chosen if all other options are exhausted.
3.2 Output
As its output, the remote variant selection algorithm and will yield
the appropriate action to be performed. There are two possibilities:
Choice_response
The Accept- headers contain sufficient information to make a
choice on behalf of the user agent possible, and the best
variant MAY be returned in a choice response.
List_response
The Accept- headers do not contain sufficient information to
make a choice on behalf of the user agent possible. A list
response MUST be returned, allowing the user agent to make the
choice itself.
3.3 Computing overall quality values
As a first step in the remote variant selection algorithm, the
overall qualities of the individual variants in the list are
computed.
The overall quality Q of a variant is the value
Q = round5( qs * qt * qc * ql * qf )
where round5 is a function which rounds a floating point value to 5
decimal places after the point, and where the factors qs, qt, qc, ql,
and qf are determined as follows.
Holtman & Mutz Experimental [Page 3]
RFC 2296 HTTP RVSA/1.0 March 1998
qs Is the source quality factor in the variant description.
qt The media type quality factor is 1 if there is no type
attribute in the variant description, or if there is no Accept
header in the request. Otherwise, it is the quality assigned
by the Accept header to the media type in the type attribute.
Note: If a type is matched by none of the elements of an
Accept header, the Accept header assigns the quality factor 0
to that type.
qc The charset quality factor is 1 if there is no charset
attribute in the variant description, or if there is no
Accept-Charset header in the request. Otherwise, the charset
quality factor is the quality assigned by the Accept-Charset
header to the charset in the charset attribute.
ql The language quality factor is 1 if there is no language
attribute in the variant description, or if there is no
Accept-Language header in the request. Otherwise, the language
quality factor is the highest quality factor assigned by the
Accept-Language header to any one of the languages listed in
the language attribute.
qf The features quality factor is 1 if there is no features
attribute in the variant description, or if there is no
Accept-Features header in the request. Otherwise, it is the
quality degradation factor for the features attribute, see
section 6.4 of [2].
As an example, if a variant list contains the variant description
{"paper.html.en" 0.7 {type text/html} {language fr}}
and if the request contains the Accept- headers
Accept: text/html:q=1.0, */*:q=0.8
Accept-Language: en;q=1.0, fr;q=0.5
the remote variant selection algorithm will compute an overall
quality for the variant as follows:
{"paper.html.fr" 0.7 {type text/html} {language fr}}
| | |
| | |
V V V
round5 ( 0.7 * 1.0 * 0.5 ) = 0.35000
Holtman & Mutz Experimental [Page 4]
RFC 2296 HTTP RVSA/1.0 March 1998
With the above Accept- headers, the complete variant list
{"paper.html.en" 0.9 {type text/html} {language en}},
{"paper.html.fr" 0.7 {type text/html} {language fr}},
{"paper.ps.en" 1.0 {type application/postscript} {language en}}
would yield the following computations:
round5 ( qs * qt * qc * ql * qf ) = Q
--- --- --- --- --- -------
paper.html.en: 0.9 * 1.0 * 1.0 * 1.0 * 1.0 = 0.90000
paper.html.fr: 0.7 * 1.0 * 1.0 * 0.5 * 1.0 = 0.35000
paper.ps.en: 1.0 * 0.8 * 1.0 * 1.0 * 1.0 = 0.80000
3.4 Definite and speculative quality values
A computed overall quality value can be either definite or
speculative. An overall quality value is definite if it was computed
without using any wildcard characters '*' in the Accept- headers, and
without the need to use the absence of a particular Accept- header.
An overall quality value is speculative otherwise.
As an example, in the previous section, the quality values of
paper.html.en and paper.html.fr are definite, and the quality value
of paper.ps.en is speculative because the type application/postscript
was matched to the range */*.
Definiteness can be defined more formally as follows. An overall
quality value Q is definite if the same quality value Q can be
computed after the request message is changed in the following way:
1. If an Accept, Accept-Charset, Accept-Language, or
Accept-Features header is missing from the request, add this
header with an empty field.
2. Delete any media ranges containing a wildcard character '*'
from the Accept header. Delete any wildcard '*' from the
Accept-Charset, Accept-Language, and Accept-Features headers.
As another example, the overall quality factor for the variant
{"blah.html" 1 {language en-gb} {features blebber [x y]}}
is 1 and definite with the Accept- headers
Accept-Language: en-gb, fr
Accept-Features: blebber, x, !y, *
Holtman & Mutz Experimental [Page 5]
RFC 2296 HTTP RVSA/1.0 March 1998
and
Accept-Language: en, fr
Accept-Features: blebber, x, *
The overall quality factor is still 1, but speculative, with the
Accept- headers
Accept-language: en-gb, fr
Accept-Features: blebber, !y, *
and
Accept-Language: fr, *
Accept-Features: blebber, x, !y, *
3.5 Determining the result
The best variant, as determined by the remote variant selection
algorithm, is the one variant with the highest overall quality value,
or, if there are multiple variants which share the highest overall
quality, the first variant in the list with this value.
The end result of the remote variant selection algorithm is
Choice_response if all of the following conditions are met
a. the overall quality value of the best variant is greater
than 0
b. the overall quality value of the best variant is a definite
quality value
c. the variant resource is a neighbor of the negotiable
resource. This last condition exists to ensure that a
security-related restriction on the generation of choice
responses is met, see sections 10.2 and 14.2 of [2].
In all other cases, the end result is List_response.
The requirement for definiteness above affects the interpretation of
Accept- headers in a dramatic way. For example, it causes the remote
algorithm to interpret the header
Accept: image/gif;q=0.9, */*;q=1.0
as
`I accept image/gif with a quality of 0.9, and assign quality
Holtman & Mutz Experimental [Page 6]
RFC 2296 HTTP RVSA/1.0 March 1998
factors up to 1.0 to other media types. If this information is
insufficient to make a choice on my behalf, do not make a choice
but send the list of variants'.
Without the requirement, the interpretation would have been
`I accept image/gif with a quality of 0.9, and all other media
types with a quality of 1.0'.
4 Use of the algorithm
This section discusses how user agents can use the remote algorithm
in an optimal way. This section is not normative, it is included for
informational purposes only.
4.1 Using quality factors to rank preferences
Using quality factors, a user agent can not only rank the elements
within a particular Accept- header, it can also express precedence
relations between the different Accept- headers. Consider for
example the following variant list:
{"paper.english" 1.0 {language en} {charset ISO-8859-1}},
{"paper.greek" 1.0 {language el} {charset ISO-8859-7}}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?