| < draft-ietf-http-negotiation-04.txt | draft-ietf-http-negotiation-05.txt > | |||
|---|---|---|---|---|
| HTTP Working Group Koen Holtman, TUE | HTTP Working Group Koen Holtman, TUE | |||
| Internet-Draft Andrew Mutz, Hewlett-Packard | Internet-Draft Andrew Mutz, Hewlett-Packard | |||
| Expires: March 15, 1998 September 15, 1997 | Expires: July 15, 1998 January 15, 1998 | |||
| Transparent Content Negotiation in HTTP | Transparent Content Negotiation in HTTP | |||
| draft-ietf-http-negotiation-04.txt | draft-ietf-http-negotiation-05.txt | |||
| STATUS OF THIS MEMO | STATUS OF THIS MEMO | |||
| This document is an Internet-Draft. Internet-Drafts are | This document is an Internet-Draft. Internet-Drafts are | |||
| working documents of the Internet Engineering Task Force | working documents of the Internet Engineering Task Force | |||
| (IETF), its areas, and its working groups. Note that other | (IETF), its areas, and its working groups. Note that other | |||
| groups may also distribute working documents as | groups may also distribute working documents as | |||
| Internet-Drafts. | Internet-Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of | Internet-Drafts are draft documents valid for a maximum of | |||
| skipping to change at line 39 ¶ | skipping to change at line 39 ¶ | |||
| West Coast). | West Coast). | |||
| Distribution of this document is unlimited. Please send | Distribution of this document is unlimited. Please send | |||
| comments to the HTTP working group at | comments to the HTTP working group at | |||
| <http-wg@cuckoo.hpl.hp.com>. Discussions of the working | <http-wg@cuckoo.hpl.hp.com>. Discussions of the working | |||
| group are archived at | group are archived at | |||
| <URL:http://www.ics.uci.edu/pub/ietf/http/>. General | <URL:http://www.ics.uci.edu/pub/ietf/http/>. General | |||
| discussions about HTTP and the applications which use HTTP | discussions about HTTP and the applications which use HTTP | |||
| should take place on the <www-talk@w3.org> mailing list. | should take place on the <www-talk@w3.org> mailing list. | |||
| HTML and change bar versions of this document, are available | HTML and change bar versions of this document are available | |||
| at <URL:http://gewis.win.tue.nl/~koen/conneg/>. | at <URL:http://gewis.win.tue.nl/~koen/conneg/>. | |||
| ABSTRACT | ABSTRACT | |||
| HTTP allows web site authors to put multiple versions of the | HTTP allows web site authors to put multiple versions of the | |||
| same information under a single URL. Transparent content | same information under a single URL. Transparent content | |||
| negotiation is an extensible negotiation mechanism, layered on | negotiation is an extensible negotiation mechanism, layered on | |||
| top of HTTP, for automatically selecting the best version when | top of HTTP, for automatically selecting the best version when | |||
| the URL is accessed. This enables the smooth deployment of | the URL is accessed. This enables the smooth deployment of | |||
| new web data formats and markup tags. | new web data formats and markup tags. | |||
| skipping to change at line 996 ¶ | skipping to change at line 996 ¶ | |||
| 6.1 Feature tags | 6.1 Feature tags | |||
| A feature tag (ftag) identifies something which can be negotiated | A feature tag (ftag) identifies something which can be negotiated | |||
| on, for example a property (feature) of a representation, a | on, for example a property (feature) of a representation, a | |||
| capability (feature) of a user agent, or the preference of a user | capability (feature) of a user agent, or the preference of a user | |||
| for a particular type of representation. The use of feature tags | for a particular type of representation. The use of feature tags | |||
| need not be limited to transparent content negotiation, and not | need not be limited to transparent content negotiation, and not | |||
| every feature tag needs to be usable in the HTTP transparent | every feature tag needs to be usable in the HTTP transparent | |||
| content negotiation framework. | content negotiation framework. | |||
| ftag = 1*( ALPHA | DIGIT | "." | "-" ) | ftag = token | quoted-string | |||
| Note: A system for feature tag registration is currently being | ||||
| developed in the IETF [4]. This specification does not define | ||||
| any feature tags. In experimental situations, the use of tags | ||||
| which start with "x." is encouraged. | ||||
| Feature tags are used in feature sets (section 6.2) and in feature | Feature tags are used in feature sets (section 6.2) and in feature | |||
| predicates (section 6.3). Feature predicates are in turn used in | predicates (section 6.3). Feature predicates are in turn used in | |||
| features attributes (section 6.4), which are used in variant | features attributes (section 6.4), which are used in variant | |||
| descriptions (section 5). Variant descriptions can be transmitted | descriptions (section 5). Variant descriptions can be transmitted | |||
| in Alternates headers (section 8.3). | in Alternates headers (section 8.3). | |||
| Feature tag comparison is case-insensitive. Examples are | Feature tag comparison is case-insensitive. A token tag XYZ is | |||
| equal to a quoted-string tag "XYZ". Examples are | ||||
| tables, fonts, blebber, wolx, screenwidth, colordepth | tables, fonts, blebber, wolx, screenwidth, colordepth | |||
| An example of the use of feature tags in a variant description is: | An example of the use of feature tags in a variant description is: | |||
| {"index.html" 1.0 {type text/html} {features tables frames}} | {"index.html" 1.0 {type text/html} {features tables frames}} | |||
| This specification follows general computing practice in that it | This specification follows general computing practice in that it | |||
| places no restrictions on what may be called a feature. Feature | places no restrictions on what may be called a feature. Feature | |||
| tag definitions SHOULD describe the tag from the viewpoint of the | tag definitions SHOULD describe the tag from the viewpoint of the | |||
| skipping to change at line 1170 ¶ | skipping to change at line 1176 ¶ | |||
| "{" "features" feature-list "}" | "{" "features" feature-list "}" | |||
| is used in a variant description to specify how the presence or | is used in a variant description to specify how the presence or | |||
| absence of particular feature tags in the user agent affects the | absence of particular feature tags in the user agent affects the | |||
| overall quality of the variant. | overall quality of the variant. | |||
| feature-list = 1%feature-list-element | feature-list = 1%feature-list-element | |||
| feature-list-element = ( fpred | fpred-bag ) | feature-list-element = ( fpred | fpred-bag ) | |||
| [ ":" true-improvement ] | [ ";" [ "+" true-improvement ] | |||
| [ "/" false-degradation ] | [ "-" false-degradation ] | |||
| ] | ||||
| fpred-bag = "[" 1%fpred "]" | fpred-bag = "[" 1%fpred "]" | |||
| true-improvement = short-float | true-improvement = short-float | |||
| false-degradation = short-float | false-degradation = short-float | |||
| Features attributes are used in variant descriptions (section 5). | Features attributes are used in variant descriptions (section 5). | |||
| Variant descriptions can be transmitted in Alternates headers | Variant descriptions can be transmitted in Alternates headers | |||
| (section 8.3). | (section 8.3). | |||
| Examples are: | Examples are: | |||
| {features !textonly [blebber !wolx] colordepth=3:0.7} | {features !textonly [blebber !wolx] colordepth=3;+0.7} | |||
| {features !blink/0.5 background:1.5 [blebber !wolx]:1.4/0.8} | {features !blink;-0.5 background;+1.5 [blebber !wolx];+1.4-0.8} | |||
| The default value for the true-improvement is 1. The default value | The default value for the true-improvement is 1. The default value | |||
| for the false-degradation is 0, or 1 if a true-improvement value is | for the false-degradation is 0, or 1 if a true-improvement value is | |||
| given. | given. | |||
| A user agent SHOULD, and a remote variant selection algorithm MUST | A user agent SHOULD, and a remote variant selection algorithm MUST | |||
| compute the quality degradation factor associated with the features | compute the quality degradation factor associated with the features | |||
| attribute by multiplying all quality degradation factors of the | attribute by multiplying all quality degradation factors of the | |||
| elements of the feature-list. Note that the result can be a factor | elements of the feature-list. Note that the result can be a factor | |||
| greater than 1. | greater than 1. | |||
| skipping to change at line 2297 ¶ | skipping to change at line 2304 ¶ | |||
| The authors are unable to trace the origin of many of the ideas | The authors are unable to trace the origin of many of the ideas | |||
| incorporated in this document. This specification builds on an | incorporated in this document. This specification builds on an | |||
| earlier incomplete specification of content negotiation recorded in | earlier incomplete specification of content negotiation recorded in | |||
| [2]. Many members of the HTTP working group have contributed to | [2]. Many members of the HTTP working group have contributed to | |||
| the negotiation model in this specification. The authors wish to | the negotiation model in this specification. The authors wish to | |||
| thank the individuals who have commented on earlier versions of | thank the individuals who have commented on earlier versions of | |||
| this document, including Brian Behlendorf, Daniel DuBois, Martin | this document, including Brian Behlendorf, Daniel DuBois, Martin | |||
| J. Duerst, Roy T. Fielding, Jim Gettys, Yaron Goland, Dirk van | J. Duerst, Roy T. Fielding, Jim Gettys, Yaron Goland, Dirk van | |||
| Gulik, Ted Hardie, Graham Klyne, Scott Lawrence, Larry Masinter, | Gulik, Ted Hardie, Graham Klyne, Scott Lawrence, Larry Masinter, | |||
| Jeffrey Mogul, Henrik Frystyk Nielsen, Frederick G.M. Roeber, Paul | Jeffrey Mogul, Henrik Frystyk Nielsen, Frederick G.M. Roeber, Paul | |||
| Sutton, and Klaus Weide. | Sutton, and Klaus Weide and Mark Wood. | |||
| 16 References | 16 References | |||
| [1] R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk, and | [1] R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk, and | |||
| T. Berners-Lee. Hypertext Transfer Protocol -- HTTP/1.1. RFC | T. Berners-Lee. Hypertext Transfer Protocol -- HTTP/1.1. RFC | |||
| 2068, HTTP Working Group, January, 1997. | 2068, HTTP Working Group, January, 1997. | |||
| [2] Roy T. Fielding, Henrik Frystyk Nielsen, and Tim Berners-Lee. | [2] Roy T. Fielding, Henrik Frystyk Nielsen, and Tim Berners-Lee. | |||
| Hypertext Transfer Protocol -- HTTP/1.1. Internet-Draft | Hypertext Transfer Protocol -- HTTP/1.1. Internet-Draft | |||
| draft-ietf-http-v11-spec-01.txt, HTTP Working Group, January, | draft-ietf-http-v11-spec-01.txt, HTTP Working Group, January, | |||
| skipping to change at line 2525 ¶ | skipping to change at line 2532 ¶ | |||
| {"home.graphics" 1.0 {features !textonly}}, | {"home.graphics" 1.0 {features !textonly}}, | |||
| {"home.textonly" 0.7 } | {"home.textonly" 0.7 } | |||
| where the "{features !textonly}" part expresses that home.graphics | where the "{features !textonly}" part expresses that home.graphics | |||
| requires the absence of the textonly feature. If the feature is | requires the absence of the textonly feature. If the feature is | |||
| present, the overall quality of home.graphics degrades to 0. | present, the overall quality of home.graphics degrades to 0. | |||
| The absence of a feature need not always degrade the overall quality | The absence of a feature need not always degrade the overall quality | |||
| to 0. In the example | to 0. In the example | |||
| {"x.html.1" 1.0 {features fonts/0.7}} | {"x.html.1" 1.0 {features fonts;-0.7}} | |||
| the absence of the fonts feature degrades the quality with a factor | the absence of the fonts feature degrades the quality with a factor | |||
| of 0.7. "fonts/0.7" can be pronounced as "fonts, or a degradation | of 0.7. Finally, in the example | |||
| of 0.7". Finally, in the example | ||||
| {"y.html" 1.0 {features [blebber wolx] }} | {"y.html" 1.0 {features [blebber wolx] }} | |||
| The "[blebber wolx]" expresses that y.html requires the presence of | The "[blebber wolx]" expresses that y.html requires the presence of | |||
| the blebber feature or the wolx feature. This construct can be | the blebber feature or the wolx feature. This construct can be | |||
| used in a number of cases: | used in a number of cases: | |||
| 1. blebber and wolx actually tag the same feature, but they were | 1. blebber and wolx actually tag the same feature, but they were | |||
| registered by different people, and some user agents say they | registered by different people, and some user agents say they | |||
| support blebber while others say they support wolx. | support blebber while others say they support wolx. | |||
| skipping to change at line 2758 ¶ | skipping to change at line 2764 ¶ | |||
| Date: Tue, 11 Jun 1996 20:05:31 GMT | Date: Tue, 11 Jun 1996 20:05:31 GMT | |||
| Etag: "gonkyyyy;1234" | Etag: "gonkyyyy;1234" | |||
| Content-Location: paper.html.en | Content-Location: paper.html.en | |||
| Vary: negotiate, accept, accept-language | Vary: negotiate, accept, accept-language | |||
| Expires: Thu, 01 Jan 1980 00:00:00 GMT | Expires: Thu, 01 Jan 1980 00:00:00 GMT | |||
| Via: 1.1 fred | Via: 1.1 fred | |||
| Age: 8000 | Age: 8000 | |||
| to the user agent. | to the user agent. | |||
| Expires: March 15, 1998 | Expires: July 15, 1998 | |||
| End of changes. 12 change blocks. | ||||
| 13 lines changed or deleted | 19 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||