/[suikacvs]/webroot/www/2004/id/draft-ietf-http-pep-05.txt
Suika

Contents of /webroot/www/2004/id/draft-ietf-http-pep-05.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Tue Jun 15 08:04:04 2004 UTC (20 years, 11 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
New

1 wakaba 1.1
2    
3    
4    
5    
6    
7    
8     HTTP Working Group PEP H. Frystyk Nielsen, W3C
9     INTERNET DRAFT D. Connolly, W3C
10     <draft-ietf-http-pep-05> R. Khare, W3C
11     E. Prud'hommeaux, W3C
12     Expires: May 21, 1998 Friday, November 21, 1997
13    
14     PEP - an Extension Mechanism for HTTP
15    
16    
17     Status of this Document
18    
19     This document is an Internet-Draft. Internet-Drafts are working
20     documents of the Internet Engineering Task Force (IETF), its areas,
21     and its working groups. Note that other groups may also distribute
22     working documents as Internet-Drafts. Internet-Drafts are draft
23     documents valid for a maximum of six months and may be updated,
24     replaced, or obsoleted by other documents at any time. It is
25     inappropriate to use Internet-Drafts as reference material or to cite
26     them other than as "work in progress".
27    
28     To learn the current status of any Internet-Draft, please check the
29     "1id-abstracts.txt" list ing contained in the Internet-Drafts Shadow
30     Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
31     munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
32     ftp.isi.edu (US West Coast). This document is also available as a W3C
33     Working Draft. The most recent release is available at
34     "http://www.w3.org/TR/WD-http-pep". Distribution of this document is
35     unlimited. Please send comments to the HTTP working group at http-
36     wg@cuckoo.hpl.hp.com. Discussions of the working group are archived at
37     "http://www.ics.uci.edu/pub/ietf/http/".
38    
39     The contribution of World Wide Web Consortium (W3C) staff time to the
40     HTTP working group is part of the W3C HTTP Activity (see "
41     http://www.w3.org/Protocols/Activity"). The editor maintains
42     background information about PEP at
43     "http://www.w3.org/Protocols/PEP/".
44    
45     Note: The PEP specification has gone through a thorough design phase
46     and entered a steady state where the authors do not intend to modify
47     the document any further. At the same time we have developed practical
48     experience with the PEP demo code (available from
49     "http://www.w3.org/Protocols/PEP") which demonstrates both client,
50     server, and proxy interactions using dynamic loaded PEP extensions.
51     However, we believe that it is essential for a specification to be
52     tested in real world applications before being deployed at large,
53     which is the reason for the status of Experimental.
54    
55    
56     Abstract
57    
58     HTTP is used increasingly in applications that need more facilities
59     than the standard version of the protocol provides, ranging from
60     distributed authoring, collaboration, and printing, to various remote
61    
62     Frystyk, et al [Page 1]
63    
64    
65    
66    
67    
68    
69     INTERNET DRAFT PEP Friday, November 21, 1997
70    
71     procedure call mechanisms. The Protocol Extension Protocol (PEP) is an
72     extension mechanism designed to address the tension between private
73     agreement and public specification and to accommodate extension of
74     applications such as HTTP clients, servers, and proxies. The PEP
75     mechanism is designed to associate each extension with a URI[2], and
76     use a few new RFC 822[1] derived header fields to carry the extension
77     identifier and related information between the parties involved in an
78     extended transaction.
79    
80     This document defines PEP and describes the interactions between PEP
81     and HTTP/1.1[7]. PEP is intended to be compatible with HTTP/1.0[5]
82     inasmuch as HTTP/1.1 is compatible with HTTP/1.0 (see [7], section
83     19.7). It is proposed that the PEP extension mechanism be included in
84     future versions of HTTP.
85    
86     The PEP extension mechanism may be applicable to other information
87     exchange not mentioned in this document. It is recommended that
88     readers get acquainted with section 1.4 for a suggested reading of
89     this specification and a list of sections specific for HTTP based
90     applications.
91    
92    
93     Table of Contents
94    
95     1. Introduction.....................................................3
96     1.1 Requirements..................................................3
97     1.2 Purpose.......................................................4
98     1.3 Operational Overview..........................................4
99     1.4 Guide to this Specification...................................5
100     2. The PEP Extension Space in HTTP..................................6
101     3. Notational Conventions...........................................7
102     3.1 Bag Syntax....................................................7
103     4. Extension Declarations...........................................8
104     4.1 Mapping Header Fields.........................................8
105     4.2 The Strength of a Declaration.................................9
106     4.3 End-to-End Extension Declarations............................10
107     4.4 Hop-by-Hop Extension Declarations............................10
108     5. Extension Policy Information....................................11
109     5.1 The Realm of a Policy........................................12
110     5.2 Policy Expirations...........................................12
111     5.3 Extra Parameters.............................................12
112     5.4 End-to-End Policies..........................................13
113     5.5 Hop-by-Hop Policies..........................................13
114     6. Publishing an Extension.........................................14
115     7. Binding HTTP Requests...........................................14
116     7.1 Extending Existing HTTP Methods..............................15
117     7.2 Adding New HTTP Methods......................................16
118     8. HTTP Status Codes...............................................16
119     8.1 420 Policy Not Fulfilled.....................................17
120     8.2 421 Bad Mapping..............................................17
121     9. HTTP Proxy Servers..............................................17
122    
123     Frystyk, et al [Page 2]
124    
125    
126    
127    
128    
129    
130     INTERNET DRAFT PEP Friday, November 21, 1997
131    
132     9.1 Proxy Servers as End-to-End Recipients.......................18
133     9.1.1 Proxy Servers Acting on Behalf of User Agents.............18
134     9.1.2 Proxy Servers Acting on Behalf of Origin Servers..........18
135     9.2 Proxy Servers and Repeated Hop-by-Hop Extensions.............19
136     10. Practical Considerations for HTTP..............................19
137     10.1 Interaction with Existing HTTP/1.1 Methods..................19
138     10.2 Interaction with Existing HTTP/1.1 Headers..................20
139     10.3 Server Initiated Extension Declarations.....................21
140     11. Security Considerations........................................21
141     12. Normative References...........................................21
142     13. Bibliography: Informative References...........................22
143     14. Acknowledgements...............................................23
144     15. Authors Addresses..............................................24
145     16. Summary of PEP Interactions....................................24
146     17. Examples.......................................................26
147     17.1 Client Queries Server for DAV...............................26
148     17.2 Client Informs Server about ZipFlate Compression Extension..26
149     17.3 Server Uses Content-Digest Extension........................27
150     17.4 Server Requires Client to use Payment Extension.............27
151    
152     1. Introduction
153    
154    
155     1.1 Requirements
156    
157     HTTP is a generic request-response protocol, designed to accommodate a
158     variety of applications, from network information exchange and
159     searching to file transfer and repository access to query and forms
160     processing.
161    
162     Most HTTP transactions are initiated by a user agent issuing a request
163     to be applied to a resource on some origin server, with intermediaries
164     between them in some cases. The origin server replies with a response
165     indicating the result of the transaction.
166    
167     Semantically, however, an HTTP transaction is between the principal
168     accessing a resource (end user) and the principal responsible for the
169     publication of a given resource (publisher). The publisher is
170     responsible for the service provided at any particular URI, for
171     example, the mapping between the URI and any representation of the
172     resource to which it refers. The end user accesses information
173     provided by a publisher. Exactly who takes the role as end user or
174     publisher is beyond the scope of this document.
175    
176     HTTP, as is the case for most transaction based information exchange
177     protocols, is used increasingly in applications that need more
178     facilities than the standard version of the protocol provides, from
179     distributed authoring, collaboration and printing, to various remote
180     procedure call mechanisms.
181    
182    
183    
184     Frystyk, et al [Page 3]
185    
186    
187    
188    
189    
190    
191     INTERNET DRAFT PEP Friday, November 21, 1997
192    
193     Many extended applications do not require agreement across the whole
194     Internet about the extended facilities; rather, it suffices:
195    
196     o That conforming peers supporting a particular protocol extension
197     or feature can employ it dynamically with no prior agreement;
198     o That it is possible for one party having a capability for a new
199     protocol to require that the other party either understand and
200     abide by the new protocol or abort the operation;
201     o That negotiation of matching capabilities is possible.
202    
203     The need for extensibility creates a tension between dynamically
204     extensible applications and public, static specifications.
205    
206    
207     1.2 Purpose
208    
209     The Protocol Extension Protocol (PEP) is an extension mechanism
210     designed to accommodate dynamic extension of HTTP applications by
211     software components; and to address the tension between private
212     agreement and public specification. The kind of extensions capable of
213     being introduced by PEP range from:
214    
215     o extending a single protocol message;
216     o introducing new encodings;
217     o initiating HTTP-derived protocols for new applications; to...
218     o switching to protocols which, once initiated, run independent of
219     the original protocol stack.
220    
221     This document defines the protocol extension mechanism referred to as
222     "PEP". The PEP design is the result of analyzing a variety of
223     extensions and extension mechanisms in HTTP and HTTP-like protocols,
224     and the motivation behind them.
225    
226     The specification also describes the interactions between PEP and
227     HTTP/1.1[7] including scoping rules and cache semantics. PEP is
228     intended to be compatible with HTTP/1.0[5] inasmuch as HTTP/1.1 is
229     compatible with HTTP/1.0 (see section 1.4 and 10) and it is proposed
230     that the PEP extension mechanism be included in future versions of
231     HTTP.
232    
233    
234     1.3 Operational Overview
235    
236     PEP is intended to be used as follows:
237    
238     o Some party designs and specifies an extension; the party assigns
239     the extension an identifier, which is a URI, and makes one or
240     more representations of the extension available at that address
241     (see section 6).
242     o A party using a PEP compliant agent with an implementation of the
243     extension wishes to use it; the agent declares the use of the
244     extension by referencing its URI in a PEP extension declaration
245     (see section 4).
246    
247    
248     Frystyk, et al [Page 4]
249    
250    
251    
252    
253    
254    
255     INTERNET DRAFT PEP Friday, November 21, 1997
256    
257     o Information about extensions can be passed between agents
258     including information of where they can be used and under what
259     conditions (see section 5).
260    
261     If an extension becomes ubiquitous, it may be incorporated into a new
262     version of the base protocol, hence transitioning from dynamic
263     extension to static specification. In this case, applications can
264     refer to the new version of the base protocol instead of the PEP
265     extension (see section 6).
266    
267     PEP extension declarations are characterized by the following
268     properties:
269    
270     o They link features introduced by the extension to the URI
271     identifying the extension, potentially allowing a recipient to
272     interpret the message correctly with no prior agreement.
273     o They contain a strength and a scope allowing the sender to define
274     the appropriate action to be taken by the recipient even if it
275     does not understand the semantics of the extension.
276     o Any agent can generate declarations independent of other agents
277    
278     The advantage of including the extension identifier is that, at the
279     cost of some extra bytes to spell out the URI, the use of a central
280     registry of extension names is avoided. PEP can also be used to extend
281     applications to support centrally registered extensions, assuming a
282     URI is published as part of the registration (see section 6).
283    
284     The PEP mechanism is designed to accommodate but does not require
285     dynamic extension of clients, servers, and proxies by software
286     components as follows:
287    
288     o Clients and servers could be implemented with software component
289     interfaces that allow dynamic installation of extension
290     facilities.
291     o An implementation compatible with a software component interface
292     supported by the agent could be made available at the URI
293     identifying the extension.
294     o An agent receiving a message referring to an extension not known
295     by the agent could dereference the extension's identifier and
296     dynamically load support for the extended facility.
297    
298     The representation and implementation of dynamic extensible software
299     component interfaces is outside the scope of this specification.
300    
301    
302     1.4 Guide to this Specification
303    
304     This specification is organized as follows: Section 2 describes how
305     PEP fits into HTTP. This is not required reading but may further the
306     understanding of the specification. Section 3 is an overview of the
307     notational conventions used throughout the specification.
308    
309    
310    
311     Frystyk, et al [Page 5]
312    
313    
314    
315    
316    
317    
318     INTERNET DRAFT PEP Friday, November 21, 1997
319    
320     Section 4, 5, and 6 is the core part of the specification describing
321     the generic PEP extension mechanism. Section 7, 8, 9, and 10 describe
322     the interactions between PEP and HTTP/1.1[7].
323    
324     The generic PEP extension mechanism may be applicable to other
325     information exchange protocols. Such mappings, however, are outside
326     the scope of this specification.
327    
328    
329     2. The PEP Extension Space in HTTP
330    
331     PEP is designed to support dynamic extensibility of HTTP methods,
332     headers, and status codes. Before describing in detail how PEP does
333     this, it is constructive to have a look at how methods, headers, and
334     status codes behave in HTTP:
335    
336     Methods
337     The method token in an HTTP request indicates the method to be
338     performed on the resource identified by the Request-URI. Methods
339     need a priori agreement of semantics and can not be extended
340     dynamically. If an HTTP server does not know a method, it must
341     report an error message (see [7] section 5.1.1). A limitation of
342     the method space is that a request can only contain a single
343     method. Hence, it is not possible to support multiple, simultaneous
344     extensions unless having a multiplicity of methods.
345    
346     Status Codes
347     The status code element is a 3-digit integer result code of the
348     attempt to understand and satisfy the request. Status codes are
349     like method tokens in that there can only be a single status code
350     in a response. However, status codes are somewhat easier to extend,
351     as unknown status codes must be treated as the x00 cod-e of that
352     class (see [7] section 6.1.1). For example, a new status code, 223
353     (My New Code) would default to 200 (OK).
354    
355     Headers
356     Header fields can be used to pass information about any of the
357     parties involved in the transaction, the transaction itself, or the
358     resource identified by the Request-URI. The advantage of headers is
359     that the header space is relatively open compared to that of
360     methods and status codes. New headers can be introduced and must be
361     ignored if the recipient does not recognize the header without
362     affecting the outcome of the transaction (see [7] section 7.1).
363    
364     In order to achieve the desired flexibility, PEP is designed to use
365     the header space for describing extensions and not directly HTTP
366     methods or status codes. Instead, PEP introduces a placeholder in the
367     method space and status code space respectively guaranteeing that all
368     interactions with existing HTTP applications perform according to the
369     PEP specification. The two placeholders are:
370    
371    
372    
373     Frystyk, et al [Page 6]
374    
375    
376    
377    
378    
379    
380     INTERNET DRAFT PEP Friday, November 21, 1997
381    
382     o a special PEP method and a PEP- method prefix which indicates
383     that a request contains one or more PEP extensions that must be
384     adhered to or the transaction aborted (see section 7);
385     o a special status code 420 (Policy Not Fulfilled) that indicates
386     that the policy for accessing the resource was not met and that
387     further information can be found in the response for diagnosing
388     the problem (see section 8.1).
389    
390     These two placeholders allow for multiple PEP extensions to be
391     deployed simultaneously without overloading the method space or the
392     status code space.
393    
394    
395     3. Notational Conventions
396    
397     This specification uses the same notational conventions and basic
398     parsing constructs as RFC 2068[7]. In particular the BNF constructs
399     "token", "quoted-string", "field-name", "URI", and "delta-seconds" in
400     this document are to be interpreted as described in RFC 2068[7].
401    
402     The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
403     "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
404     document are to be interpreted as described in RFC 2119[9].
405    
406     PEP does not rely on particular features defined in URLs [3] that
407     cannot potentially be expressed using URNs (see section 6). Therefore,
408     the more generic term URI[2] is used throughout the specification.
409    
410    
411     3.1 Bag Syntax
412    
413     The bag element is a recursive structure that uses braces ("{" and
414     "}") to delimit attribute-value pairs that may consist of tokens,
415     quoted-strings, URIs and recursively defined bags. The BNF for the bag
416     syntax is as follows:
417    
418     bag = "{" bagname *bagitem "}"
419     bagname = token
420     bagitem = bag
421     | token
422     | quoted-string
423    
424     The bag semantics are defined by its context and the bag name. The
425     value of a quoted string may be a URI in some cases. Unless explicitly
426     defined otherwise, all tokens within a bag are case-insensitive.
427     Comments as defined by RFC 822[1] indicated by surrounding the comment
428     text with parentheses MUST NOT be used within a bag construct.
429    
430    
431    
432    
433    
434    
435    
436     Frystyk, et al [Page 7]
437    
438    
439    
440    
441    
442    
443     INTERNET DRAFT PEP Friday, November 21, 1997
444    
445     4. Extension Declarations
446    
447     Extension declaration bags are used to indicate the PEP extensions
448     that have been applied to a message. The grammar for an extension
449     declaration is as follows:
450    
451     ext-decl = "{" req-ext-attr *opt-ext-attr "}"
452     req-ext-attr = map
453     opt-ext-attr = strength
454     | attribute-ext
455     map = "{" "map" <"> URI <"> #(header-prefix) "}"
456     strength = "{" "strength" ( "must" | "may" ) "}"
457     attribute-ext = bag
458     header-prefix = 1*DIGIT "-"
459    
460     The map attribute bag contains the URI identifying the extension and a
461     list of any header field names introduced by the extension (see
462     section 4.1 and 6). If the extension identifier is relative, it is
463     interpreted relative to the base URI of the message as defined by RFC
464     1808[4].
465    
466     The strength attribute bag indicates whether the recipient MUST or MAY
467     obey the semantics given by the extension or report an error (see
468     section 4.2).
469    
470     An extension declaration bag (ext-decl) can be extended through the
471     use of one or more attribute-ext bags. Unrecognized attribute-ext bags
472     SHOULD be ignored and MUST NOT be removed by proxies when forwarding
473     the extension declaration (see section 9).
474    
475     Extension declarations can either be hop-by-hop or end-to-end (see
476     [7], section 13.5.1) depending on the scope of the declaration (see
477     section 4.3 and 4.4). End-to-end declarations MUST be transmitted to
478     the ultimate recipient of the extension declaration. Hop-by-hop
479     declarations are meaningful only for a single transport-level
480     connection.
481    
482    
483     4.1 Mapping Header Fields
484    
485     The header-prefix in a map attribute bag can be used to indicate that
486     all header fields in the message matching the header-prefix value
487     using string prefix-matching are introduced by this extension
488     declaration instance. This allows an extension instance to dynamically
489     reserve a part of the header space in the message for introducing new
490     header fields without risking header name conflicts with other
491     extension instances.
492    
493     Examples of header-prefix values are
494    
495    
496    
497    
498     Frystyk, et al [Page 8]
499    
500    
501    
502    
503    
504    
505     INTERNET DRAFT PEP Friday, November 21, 1997
506    
507     1-, 435-
508     546-
509     2343543645653-
510    
511     Agents SHOULD NOT overload well-known or widely deployed header fields
512     with new semantics unless the new semantics are a superset of the
513     existing semantics so that the header fields still can be interpreted
514     according to the old semantics.
515    
516     Agents SHOULD NOT reuse already mapped header fields in the same
517     message. If a header field is mapped by multiple extension
518     declarations in the same message, the recipient SHOULD report an error
519     (see section 8.2).
520    
521     Proxies adding extension declarations to a message MUST make sure that
522     any header fields introduced do not conflict with already mapped
523     header fields in that protocol message (see section 8.2).
524    
525    
526     4.2 The Strength of a Declaration
527    
528     The strength attribute bag can be used to specify the actions to be
529     taken by the ultimate recipient of the extension declaration. The
530     strength value can indicate that
531    
532     1. the recipient MUST obey the extension declaration or report an
533     error; or
534     2. the recipient MAY obey the extension declaration or ignore it
535     altogether.
536    
537     If the strength is "must", the ultimate recipient MUST consult and
538     adhere to the rules given by the extension when processing the message
539     or report an error (see section 7 and 8.1).
540    
541     If the strength is "may" the ultimate recipient of the extension MAY
542     consult and adhere to the rules given by the extension when processing
543     the message, or ignore the extension declaration completely. An agent
544     may not be able to distinguish whether the ultimate recipient does not
545     understand an extension referred to by an extension declaration of
546     strength "may" or simply ignores the extension declaration.
547    
548     If no strength attribute is present, the default strength is "may".
549    
550     Not accepting or ignoring an extension declaration is different from
551     not accepting a mapping of header field-names introduced by the map
552     attribute bag. If the ultimate recipient cannot accept a mapping, for
553     example if a field-name is already mapped by another extension
554     declaration in that protocol message, it SHOULD report an error (see
555     section 8.2).
556    
557    
558    
559    
560     Frystyk, et al [Page 9]
561    
562    
563    
564    
565    
566    
567     INTERNET DRAFT PEP Friday, November 21, 1997
568    
569     4.3 End-to-End Extension Declarations
570    
571     End-to-end declarations MUST be transmitted to the ultimate recipient
572     of the declaration. The PEP header field is an end-to-end header field
573     and is defined as follows:
574    
575     pep = "PEP" ":" 1#ext-decl
576    
577     For example
578    
579     GET / HTTP/1.1
580     Host: some.host
581     PEP: {{map "http://www.w3.org/PEP/DAV"}}
582    
583     If multiple end-to-end extensions are declared in the same message,
584     the declarations MUST be listed in the order in which they were
585     applied to the message.
586    
587     Proxies MAY under certain conditions act as the ultimate recipient of
588     declarations on behalf of user agents and origin servers (see section
589     9.1).
590    
591    
592     4.4 Hop-by-Hop Extension Declarations
593    
594     Hop-by-hop extension declarations are meaningful only for a single
595     transport-level connection. The C-PEP header field is a hop-by-hop
596     header field and MUST NOT be communicated by proxies over further
597     connections. The C-PEP header has the following grammar:
598    
599     c-pep = "C-PEP" ":" 1#ext-decl
600    
601     For example
602    
603     GET / HTTP/1.1
604     Host: some.host
605     C-PEP: {{map "http://www.w3.org/PEP/ProxyAuth" 43-}}
606     43-Credentials: "fsdgfag"
607     Connection: C-PEP, Credentials
608    
609     In HTTP, the C-PEP header field MUST be protected by a Connection
610     header by including C-PEP as a Connection header directive. The
611     directive MUST be handled according to the HTTP/1.1 specification of
612     the Connection header (see section 10.2 and [7], section 14.10).
613    
614     An agent MUST NOT send the C-PEP header field to an HTTP/1.0 proxy as
615     it does not obey the HTTP/1.1 rules for parsing the Connection header
616     field (see [7], section 19.7.1).
617    
618     If multiple hop-by-hop extensions are declared in the same message,
619     the extension declarations MUST be listed in the order in which they
620     were applied. Hop-by-hop C-PEP declarations MUST be processed before
621     any end-to-end PEP declarations.
622    
623    
624    
625     Frystyk, et al [Page 10]
626    
627    
628    
629    
630    
631    
632     INTERNET DRAFT PEP Friday, November 21, 1997
633    
634     5. Extension Policy Information
635    
636     Extension Policy bags are used to indicate the extensions that may be
637     applied to a message. Extension policies differ from extension
638     declarations in that the latter is information about which extensions
639     have been applied to a message. An extension policy is defined as
640     follows:
641    
642     policy-decl = "{" req-pol-attr *opt-pol-attr "}"
643     req-pol-attr = id
644     opt-pol-attr = for
645     | max-age
646     | parameters
647     | strength
648     | attribute-ext
649     id = "{" "id" <"> URI <"> "}"
650     for = "{" "for" #URI-wildcard "}"
651     max-age = "{" "max-age" delta-seconds "}"
652     parameters = "{" "params" *bagitem "}"
653     URI-wildcard = <"> URI <"> [ wildcard ]
654     wildcard = "*"
655    
656     The id attribute specifies the URI identifying the extension (see
657     section 6). If the extension identifier is relative, it is interpreted
658     relative to the base URI of the message as defined by RFC 1808[4].
659    
660     The for attribute bag specifies which resources, the policy is
661     intended for (see section 5.1) and the max-age attribute bag when the
662     information should be considered stale (see section 5.2). The params
663     attribute bag can be used to pass additional information about the
664     extension policy (see section 5.3).
665    
666     The strength attribute indicates whether the policy is a requirement
667     or optional for the resource(s) for which it applies (see section
668     4.2).
669    
670     An extension policy bag (policy-decl) can be extended through the use
671     of one or more attribute-ext bags. Unrecognized attribute-ext bags
672     SHOULD be ignored and MUST NOT be removed by proxies when forwarding
673     the extension policy (see section 9).
674    
675     Extension policies can either be hop-by-hop or end-to-end policies
676     (see [7], section 13.5.1) depending on the scope (see section 5.4 and
677     5.5). End-to-end policies MUST be transmitted to the ultimate
678     recipient of the extension policy. Hop-by-hop policies are meaningful
679     only for a single transport-level connection.
680    
681     Note: It is expected that extension policies will be integrated with
682     other metadata initiatives like the RDF initiative [11], for example.
683    
684    
685    
686     Frystyk, et al [Page 11]
687    
688    
689    
690    
691    
692    
693     INTERNET DRAFT PEP Friday, November 21, 1997
694    
695     5.1 The Realm of a Policy
696    
697     The for attribute bag can be used to specify the resource(s)
698     identified by URI(s) to which the policy applies. This allows
699     extension policies to be deployed to third party sites and to be
700     distributed by other means than directly between the involved parties.
701     A URI followed by a LWS and a wildcard ("*") represents the set of
702     URIs that contains the given URI using prefix matching. A URI with no
703     wildcard means that URI only.
704    
705     Examples of URI-wildcards are
706    
707     {for "/" *}
708     {for "http://www.w3.org/pub/" *}
709     {for "secret/Overview.html"}
710    
711     An empty for attribute bag (no bagitems included) indicates that the
712     policy is not applied to any resource. If no for attribute bag is
713     present, the default value is the Request-URI.
714    
715     A realm can include any number of resources but note that a single
716     wildcard "*" is not a valid URI-wildcard value.
717    
718    
719     5.2 Policy Expirations
720    
721     The max-age attribute bag can be used to specify a date/time after
722     which the recipient SHOULD consider the policy stale. The max-age
723     attribute bag value indicates that the information should no longer be
724     used if the age is greater than the specified time in seconds (see [7]
725     section 13.2.3 for how to calculate the age). A max-age attribute bag
726     cannot be used to force the recipient to discard the policy
727     information; its semantics apply only to the caching mechanism of
728     policy information.
729    
730    
731     5.3 Extra Parameters
732    
733     The params attribute bag can be used to include additional information
734     about the extension or modifiers on the use of the extension. The
735     params values may or may not be case-sensitive, depending on the
736     semantics of the parameter name. The params attribute bag is defined
737     as a generic bag structure, which may be nested. No default parameters
738     are defined.
739    
740     Note: PEP implementations should pass any parameters to the module or
741     modules handling the particular extension as this may have impact the
742     use of the extension.
743    
744    
745    
746    
747    
748    
749     Frystyk, et al [Page 12]
750    
751    
752    
753    
754    
755    
756     INTERNET DRAFT PEP Friday, November 21, 1997
757    
758     5.4 End-to-End Policies
759    
760     End-to-end policies MUST be transmitted to the ultimate recipient of a
761     message. The PEP-Info header field is an end-to-end header and is
762     defines as follows:
763    
764     pep-info = "PEP-Info" ":" 1#policy-decl
765    
766     For example
767    
768     HTTP/1.1 200 OK
769     Content-Type: text/html
770     Content-Length: 412
771     PEP-Info: {{id "http://some.org/payment-extension"}
772     {for "/cgi-bin/buy" *}
773     {strength must}}
774    
775     <!doctype html public "-//W3C//DTD HTML 3.2//EN" >
776     <html> ...
777    
778     Proxies MAY under certain conditions act as the ultimate recipients of
779     extension policies on behalf of user agents and origin servers (see
780     section 9.1).
781    
782    
783     5.5 Hop-by-Hop Policies
784    
785     Hop-by-hop policies are meaningful only for a single transport-level
786     connection. The C-PEP-Info header field is a hop-by-hop header field
787     and MUST NOT be communicated by proxies over further connections. The
788     C-PEP-Info header has the following grammar:
789    
790     c-pep-info = "C-PEP-Info" ":" 1#policy-decl
791    
792     For example
793    
794     HTTP/1.1 420 Policy Not Fulfilled
795     C-PEP-Info: {{id "http://some.org/provide-stats"}
796     {for "/" *}}
797     Connection: C-PEP-Info
798     ...
799    
800     In HTTP, the C-PEP-Info header field MUST be protected by a Connection
801     header by including C-PEP-Info as a Connection header directive. The
802     directive MUST be handled according to the HTTP/1.1 specification of
803     the Connection header (see section 10.2 and [7], section 14.10).
804    
805     An agent MUST NOT send the C-PEP-Info header field to an HTTP/1.0
806     proxy as it does not obey the HTTP/1.1 rules for parsing the
807     Connection header field (see [7], section 19.7.1).
808    
809    
810    
811    
812    
813    
814     Frystyk, et al [Page 13]
815    
816    
817    
818    
819    
820    
821     INTERNET DRAFT PEP Friday, November 21, 1997
822    
823     6. Publishing an Extension
824    
825     While the protocol extension definition should be published at the
826     address of the extension identifier, this is not a requirement of this
827     specification. The only absolute requirement is that distinct names be
828     used for distinct semantics. For example, one way to achieve this is
829     to use a mid, cid, or uuid URI. The association between the extension
830     identifier and the specification might be made by distributing a
831     specification, which references the extension identifier.
832    
833     It is strongly recommended that the integrity and persistence of the
834     extension identifier is maintained and kept unquestioned throughout
835     the lifetime of the extension. Care should be taken not to distribute
836     conflicting specifications that reference the same name. Even when a
837     URI is used to publish extension specifications, care must be taken
838     that the specification made available at that address does not change
839     significantly over time. One agent may associate the identifier with
840     the old semantics, and another might associate it with the new
841     semantics.
842    
843     The extension definition may be made available in different
844     representations ranging from
845    
846     o a human-readable specification defining the extension semantics,
847     o downloadable code which implements the semantics defined by the
848     extension,
849     o a formal interface description provided by the extension, to
850     o a machine-readable specification defining the extension
851     semantics.
852    
853     For example, a software component that implements the specification
854     may reside at the same address as a human-readable specification
855     (distinguished by content negotiation). The human-readable
856     representation serves to document the extension and encourage
857     deployment, while the software component allows clients and servers to
858     be dynamically extended.
859    
860    
861     7. Binding HTTP Requests
862    
863     An HTTP request is called a "binding" request if it includes at least
864     one PEP extension declaration of strength "must". An HTTP server MUST
865     NOT return a 2xx status-code without obeying all extension
866     declaration(s) of strength "must" in a binding request. This section
867     describes how the binding request mechanism in PEP interacts with
868     existing HTTP applications.
869    
870     In [7], section 7.1, it is stated that "Unrecognized header fields
871     SHOULD be ignored by the recipient and MUST be forwarded by proxies."
872     Hence, using a PEP or a C-PEP extension declaration is not sufficient
873     to evoke the correct behavior from existing HTTP agents in a binding
874     request. However, in [7], section 5.1.1, Method, it is said that
875    
876     Frystyk, et al [Page 14]
877    
878    
879    
880    
881    
882    
883     INTERNET DRAFT PEP Friday, November 21, 1997
884    
885     "Servers SHOULD return 501 (Not Implemented) if the method is
886     unrecognized or not implemented by the server." A similar statement is
887     made in [5], section 9.5. It is therefore safe to assume that using
888     the method name will produce the correct result from existing HTTP
889     servers and proxies.
890    
891     PEP uses the HTTP request method name to extend existing HTTP/1.1
892     methods and to introduce new methods (see section 1.3). In both cases,
893     a binding HTTP request invalidates cached entries as described in [7],
894     section 13.10. Responses to binding requests are not cachable.
895    
896    
897     7.1 Extending Existing HTTP Methods
898    
899     The method name of all HTTP/1.1 requests containing a PEP extension
900     declaration of strength "must" that semantically extends that method
901     MUST be prefixed by "PEP-" (see section 10.1). For example, a client
902     might express the binding rights-management constraints in an HTTP PUT
903     request as follows:
904    
905     PEP-PUT /a-resource HTTP/1.1
906     PEP: {{map "http://www.w3.org/PEP/rights-management" 8-}
907     {strength must}}
908     8-copyright: http://www.w3.org/COPYRIGHT.html
909     8-contributions: http://www.w3.org/PATCHES.html
910     Host: www.w3.org
911     Content-Length: 1203
912     Content-Type: text/html
913    
914     <!doctype html ...
915    
916     The ultimate recipient of a binding HTTP request with the "PEP-"
917     prefix on the method name MUST process the request by performing the
918     following actions in the order they occur:
919    
920     1. Identify all extension declarations (both hop-by-hop and end-
921     to-end) of strength "must"; the server MAY ignore declarations
922     of strength "may" without affecting the result of the
923     transaction;
924     2. Evaluate and process the extensions identified in 1) in the
925     order they were declared (see section 4.3 and 4.4) or if the
926     extension declarations do not match the policy for accessing
927     the resource then respond with a 420 (Policy Not Fulfilled)
928     status-code (see section 8.1);
929     3. Strip the "PEP-" prefix from the method name and process the
930     reminder of the request according to the semantics of the
931     existing HTTP/1.1 method name as defined in [7].
932    
933     The "PEP-" prefix is reserved by PEP and MUST NOT be used by other
934     HTTP extensions.
935    
936    
937    
938    
939     Frystyk, et al [Page 15]
940    
941    
942    
943    
944    
945    
946     INTERNET DRAFT PEP Friday, November 21, 1997
947    
948     7.2 Adding New HTTP Methods
949    
950     The PEP method can be used for all PEP extension declarations of
951     strength "must" that do not naturally extend existing HTTP/1.1
952     methods. Such methods can be address space manipulation extensions
953     like MOVE and COPY, for example:
954    
955     PEP /source.html HTTP/1.1
956     PEP: {{map "http"//www.w3.org/DAV/MOVE" 4-}
957     {strength must}}
958     4-Destination: destination.html
959     Host: some.host
960    
961     The PEP method indicates that the semantics of this request are
962     defined by one or more PEP extension declarations of strength "must"
963     included in the request. The PEP method does not have any HTTP message
964     semantics besides being a placeholder for PEP extension declarations
965     and hence all other semantics MUST be defined by the declaration(s)
966     included in the request.
967    
968     The ultimate recipient of a PEP request MUST process the request by
969     doing the following:
970    
971     1. Identify all extension declarations (both hop-by-hop and end-
972     to-end) of strength "must"; the server MAY ignore declarations
973     of strength "may" without affecting the result of the
974     transaction;
975     2. Evaluate and process the extensions identified in 1) in the
976     order they were declared (see section 4.3 and 4.4) or if the
977     extension declarations do not match the policy for accessing
978     the resource then respond with a 420 (Policy Not Fulfilled)
979     status-code (see section 8.1);
980    
981     A successful response SHOULD be 200 (OK) if the response includes an
982     entity, 202 (Accepted) if the action has not yet been enacted, or 204
983     (No Content) if the response is OK but does not include an entity. If
984     no extension declarations have strength "must", the response SHOULD be
985     400 (Bad Request).
986    
987     The PEP method is reserved by PEP and MUST NOT be used by other HTTP
988     extensions.
989    
990    
991     8. HTTP Status Codes
992    
993     PEP introduces two new status codes in addition to the ones already
994     defined by HTTP/1.1[7]. Each Status-Code is described below, including
995     a description the metainformation required in the response.
996    
997    
998    
999    
1000    
1001    
1002     Frystyk, et al [Page 16]
1003    
1004    
1005    
1006    
1007    
1008    
1009     INTERNET DRAFT PEP Friday, November 21, 1997
1010    
1011     8.1 420 Policy Not Fulfilled
1012    
1013     The policy for accessing the resource has not been met in the request.
1014     The response MUST include a PEP-Info or a C-PEP-Info header field
1015     specifying the extensions required by the publishing party for
1016     accessing the resource. The server MAY use the for attribute bag to
1017     indicate whether the policy applies to other resources.
1018    
1019     The client MAY repeat the request using the appropriate extension(s).
1020     If the initial request already included the extensions requested in
1021     the 420 response, then the response indicates that access has been
1022     refused for those extension declarations.
1023    
1024     If the 420 response contains the same set of extension policies as the
1025     prior response, then the client MAY present any entity included in the
1026     response to the user, since that entity may include relevant
1027     diagnostic information.
1028    
1029     Implementers may note the similarity to the way authentication
1030     challenges are issued with the 401 (Unauthorized) status-code (see
1031     [7], section 10.4.2)
1032    
1033    
1034     8.2 421 Bad Mapping
1035    
1036     The mappings indicated by one or more map attribute bags in the
1037     request were not unique and mapped the same header field more than
1038     once. The client MAY repeat the request using a new set of mappings if
1039     it believes that it can find a unique set of header fields for which
1040     the transaction will succeed.
1041    
1042    
1043     9. HTTP Proxy Servers
1044    
1045     This section describes the role of caching and non-caching proxies and
1046     how they interact with PEP extensions. Normally, the ultimate
1047     recipient of an end-to-end extension declaration or an end-to-end
1048     extension policy is an origin server or a user agent.
1049    
1050     In this case, a proxy MUST forward all components of the extension,
1051     including declarations, policies, headers, and any methods and status
1052     codes defined by this specification.
1053    
1054     In other cases, however, intermediate caching and non-caching proxies
1055     MAY be authorized to act on behalf of origin servers and/or user
1056     agents. How such an agreement is reached between a party representing
1057     the proxy and the party on which behalf it can act, is outside the
1058     scope of PEP, but for example, the parties may be within the same
1059     trust domain.
1060    
1061    
1062    
1063    
1064     Frystyk, et al [Page 17]
1065    
1066    
1067    
1068    
1069    
1070    
1071     INTERNET DRAFT PEP Friday, November 21, 1997
1072    
1073     9.1 Proxy Servers as End-to-End Recipients
1074    
1075    
1076     9.1.1 Proxy Servers Acting on Behalf of User Agents
1077    
1078     In case a proxy is authorized to act as the ultimate recipient on
1079     behalf of its proxy clients on end-to-end extensions, it MUST obey the
1080     following rules:
1081    
1082     o The proxy SHOULD remove the extension declaration(s) and any
1083     header fields that are part of these declaration(s) on which it
1084     can act authoritatively before forwarding the response to the
1085     proxy client;
1086     o it SHOULD issue extension policies for the extensions on which it
1087     can act authoritatively as if it was a user agent;
1088     o if an extension declaration added by an HTTP proxy is of strength
1089     "must", the proxy MUST either prepend the "PEP-" method name
1090     prefix or use the PEP method instead of the method name used in
1091     the proxy client request, before forwarding the response to the
1092     origin server (see section 7.1).
1093    
1094     An example of a proxy acting on behalf of one or more user agents is
1095     an elementary school wishing to enforce a certain policy for accessing
1096     information on the Internet. The local school proxy can act
1097     authoritatively as a retrieval filter on behalf of the pupils instead
1098     of having distributed filtering enabled on each of the user agents
1099     using the client.
1100    
1101    
1102     9.1.2 Proxy Servers Acting on Behalf of Origin Servers
1103    
1104     In case a proxy is authorized to act as the ultimate recipient on
1105     behalf of an origin server on end-to-end extensions, it MUST obey the
1106     following rules:
1107    
1108     o The proxy SHOULD remove the extension declaration(s) and any
1109     header fields that are part of these declaration(s) on which it
1110     can act authoritatively before forwarding the request to the
1111     origin server;
1112     o it SHOULD issue extension policies for the extensions on which it
1113     can act authoritatively as if it was an origin server;
1114     o if an extension declaration added by an HTTP proxy is of strength
1115     "must" and there are no other extension declarations of strength
1116     "must" in the request, the proxy MUST remove any "PEP-" method
1117     name prefix before forwarding the request to the origin server
1118     (see section 7.1);
1119     o if a request uses the PEP method, the proxy MUST NOT forward the
1120     request to the origin server unless the communication between the
1121     proxy and the origin server can be completed using an existing
1122     HTTP/1.1 method.
1123    
1124     An example of a proxy acting on behalf of an origin server is a
1125     corporation having a subscription on an on-line journal. All access to
1126    
1127    
1128     Frystyk, et al [Page 18]
1129    
1130    
1131    
1132    
1133    
1134    
1135     INTERNET DRAFT PEP Friday, November 21, 1997
1136    
1137     the origin server goes through the corporate firewall that runs a
1138     caching proxy server. The organization reports to the publisher of the
1139     journal on a monthly basis at which point the subscription is re-
1140     evaluated. In the day-to-day access, the proxy has the authority to
1141     act authoritatively on behalf of the origin server registering usage
1142     of the journal.
1143    
1144    
1145     9.2 Proxy Servers and Repeated Hop-by-Hop Extensions
1146    
1147     If a PEP extension is to be used on parts of a message path, including
1148     user agents, origin servers, and proxies, not covered by end-to-end or
1149     hop-by-hop extension declarations, it can be defined as a repeated
1150     hop-by-hop extension. This can for example be the case for a proxy
1151     extension applied to a subset of proxies in a message path.
1152    
1153     It is for the designer of the extension to decide whether it can
1154     repeat itself on a hop-by-hop basis. In other words, any scope more
1155     complex than a hop-by-hop or an end-to-end scope is a property of the
1156     extension and is transparent to PEP.
1157    
1158    
1159     10. Practical Considerations for HTTP
1160    
1161     This section describes some practical considerations intended for PEP
1162     extended HTTP applications. The issues described may not apply to
1163     other information retrieval protocols.
1164    
1165    
1166     10.1 Interaction with Existing HTTP/1.1 Methods
1167    
1168     Extension designers should consider whether an extension is to work
1169     with existing HTTP/1.1 methods using the "PEP-" method token prefix or
1170     with the PEP method (see section 7.1 and 7.2). This specification does
1171     not provide an absolute rule for when to use the PEP method compared
1172     to the "PEP-" method token prefix except that the "PEP-" method token
1173     prefix is required in situations where intermediate proxies may act
1174     authoritatively on behalf of origin servers or user agents (see
1175     section 9.1.1 and 9.1.2). In case the extension can be used with
1176     existing methods then it should be considered whether the extension
1177     can be used with any of the existing HTTP/1.1 methods or only a subset
1178     of them.
1179    
1180     Some HTTP/1.1 methods follow the convention of being "safe" to the
1181     requester meaning that they should never have the significance of
1182     taking an action other than retrieval (see [7], section 9.1). This is
1183     for example the case of the GET and the HEAD method. As PEP extension
1184     declarations of strength "must" explicitly modify or replace the
1185     method name, existing HTTP applications will never be able to mistake
1186     a PEP enabled message for any of the existing HTTP messages indicated
1187     as being safe.
1188    
1189    
1190     Frystyk, et al [Page 19]
1191    
1192    
1193    
1194    
1195    
1196    
1197     INTERNET DRAFT PEP Friday, November 21, 1997
1198    
1199     Some extensions may have the property of "idempotence" in that (aside
1200     from error or expiration issues) the side effects of N > 0 identical
1201     extended requests is the same as for a single extended request. If
1202     this is not the case for a PEP extension then it should consider
1203     whether it wants to 1) disable itself on repeated requests, and/or 2)
1204     inform a user about the behavior of repeating identical requests with
1205     this extension.
1206    
1207    
1208     10.2 Interaction with Existing HTTP/1.1 Headers
1209    
1210     Designers of extensions to be used within the HTTP messaging model
1211     should consider the interaction with existing HTTP/1.1 headers.
1212     Especially, it should be noted that PEP is designed to be compatible
1213     with HTTP/1.0[5] inasmuch as HTTP/1.1 is compatible with HTTP/1.0 (see
1214     [7], section 19.7).
1215    
1216     The Connection header as described in [7], section 14.10, allows the
1217     sender to specify options that are desired for that particular
1218     transport connection only. All PEP hop-by-hop extension declarations
1219     and policies along with any header fields introduced by extension
1220     declarations MUST be included as Connection header directives. PEP
1221     applications MUST NOT send any hop-by-hop extension declarations or
1222     policies to HTTP/1.0 proxies as they do not obey the rules of HTTP/1.1
1223     for parsing the Connection header field (see also [7], section
1224     19.7.1).
1225    
1226     The Upgrade header, [7], section 14.41, allows the client to specify
1227     what additional communication protocols it supports and would like to
1228     use if the server finds it appropriate to switch protocols. PEP
1229     provides the same functionality but without the need for a central
1230     registry of protocol names. PEP compliant agents MAY use the 101
1231     (Switching Protocols) status code to switch to HTTP-based protocols
1232     and protocols, which once initiated, run completely independently of
1233     HTTP.
1234    
1235     The content coding values in the Content-Encoding header as described
1236     in [7], section 14.12, indicate an encoding transformation that has
1237     been applied to an entity. PEP provides the same functionality but
1238     without the need for a central registry of content codings. As both
1239     content codings and PEP extension declarations are ordered, using both
1240     may lead to ambiguous situations. Simultaneous use of both mechanisms
1241     is therefore strongly discouraged.
1242    
1243     An origin server can explicitly prevent intermediaries from applying a
1244     Content-Encoding to a resource by using the no-transform Cache-Control
1245     directive (see [7], section 14.9.4).
1246    
1247    
1248    
1249    
1250    
1251     Frystyk, et al [Page 20]
1252    
1253    
1254    
1255    
1256    
1257    
1258     INTERNET DRAFT PEP Friday, November 21, 1997
1259    
1260     10.3 Server Initiated Extension Declarations
1261    
1262     PEP extension declarations can be generated by servers as well as
1263     clients. If a PEP compliant server sends a response with an extension
1264     declaration referring to an extension that modifies the message in
1265     such a way that the message can not be decoded without using the
1266     extension, and the corresponding request was either
1267    
1268     1. received from a client whose version is lower than HTTP/1.1, or
1269     2. received with a Via header field indicating that it was
1270     forwarded by a proxy whose version is lower than HTTP/1.1,
1271    
1272     and the response does not already include an Expires header, then the
1273     sender SHOULD include an Expires header field whose field-value is
1274     identical to the field-value of its Date header field(see [7], section
1275     14.12). If all agents in the message path are HTTP/1.1, then the
1276     sender SHOULD use the Cache-Control header field instead of the
1277     Expires header field to mark the entity uncachable.
1278    
1279    
1280     11. Security Considerations
1281    
1282     o The for parameter allows one party to give information about the
1283     extensions used by another party's resources. The parties may
1284     provide resources on different servers, or at different addresses
1285     on the same server. While distinguishing between the parties
1286     responsible for different resources at the same server may be
1287     infeasible, clients SHOULD ignore information given by one server
1288     about another unless they have reason to trust it, or reason to
1289     believe that trusting it will have no significant negative
1290     consequences.
1291     o Dynamic installation of extension facilities as described in the
1292     introduction involves software written by one party (the provider
1293     of the implementation) to be executed under the authority of
1294     another (the party operating the host software). This opens the
1295     host party to a variety of "Trojan horse" attacks by the
1296     provider, or a malicious third party that forges implementations
1297     under a provider's name. See, for example RFC2046[6], section
1298     4.5.2 for a discussion of these risks.
1299    
1300     12. Normative References
1301    
1302     [1] D. H. Crocker. "Standard for the Format of ARPA Internet Text
1303     Messages", STD 11, RFC 822, UDEL, August 1982
1304     [2] T. Berners-Lee, "Universal Resource Identifiers in WWW. A
1305     Unifying Syntax for the Expression of Names and Addresses of
1306     Objects on the Network as used in the World-Wide Web", RFC 1630,
1307     CERN, June 1994.
1308     [3] T. Berners-Lee, L. Masinter, M. McCahill. "Uniform Resource
1309     Locators (URL)" RFC 1738, CERN, Xerox PARC, University of
1310     Minnesota, December 1994.
1311     [4] R. Fielding, "Relative Uniform Resource Locators", RFC 1808, UC
1312     Irvine, June 1995.
1313    
1314     Frystyk, et al [Page 21]
1315    
1316    
1317    
1318    
1319    
1320    
1321     INTERNET DRAFT PEP Friday, November 21, 1997
1322    
1323     [5] T. Berners-Lee, R. Fielding, H. Frystyk, "Hypertext Transfer
1324     Protocol -- HTTP/1.0", RFC 1945, W3C/MIT, UC Irvine, W3C/MIT, May
1325     1996.
1326     [6] N. Freed, N. Borenstein, "Multipurpose Internet Mail Extensions
1327     (MIME) Part Two: Media Types", RFC 2046, Innosoft, First Virtual,
1328     November 1996.
1329     [7] R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk, T. Berners-Lee,
1330     "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2068, U.C. Irvine,
1331     DEC W3C/MIT, DEC, W3C/MIT, W3C/MIT, January 1997
1332     [8] D. Kristol, L. Montulli, "HTTP State Management Mechanism", RFC
1333     2109, Bell Laboratories Lucent Technologies, Netscape
1334     Communications, February 1997
1335     [9] S. Bradner, "Key words for use in RFCs to Indicate Requirement
1336     Levels", RFC 2119, Harvard University, March 1997
1337     [10] J. C. Mogul, R. Fielding, J. Gettys, H. Frystyk, "Use and
1338     interpretation of HTTP version numbers", Internet Draft RFC 2145,
1339     DEC, U.C. Irvine, DEC W3C/MIT, W3C/MIT, HTTP Working Group, May,
1340     1997.
1341     [11] O. Lassila, R. Swick, "Resource Description Framework (RDF) -
1342     Model and Syntax", W3C/Nokia, W3C, W3C Working draft, October
1343     1997. This is work in progress
1344     [12] H. Schulzrinne, A. Rao, R. Lanphier, "Real Time Streaming
1345     Protocol (RTSP)", Internet Draft draft-ietf-mmusic-rtsp-05,
1346     Columbia U./Netscape/Progressive Networks, March 1997. This is
1347     work in progress
1348     [13] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource
1349     Locators (URL)", Internet Draft draft-fielding-url-syntax-09,
1350     W3C/MIT, U.C. Irvine, Xerox Corporation, May 1997. This is work
1351     in progress
1352    
1353     13. Bibliography: Informative References
1354    
1355     [14] D. Eastlake, "Universal Payment Preamble", Internet Draft draft-
1356     eastlake-universal-payment-03, CyberCash, March 1996. This is
1357     work in progress.
1358     [15] D. M. Kristol, "A Proposed Extension Mechanism for HTTP",
1359     Internet Draft draft-kristokl-http-extensions-00, January 1995.
1360     Document expired.
1361     [16] JEPI, "Selecting Payment Mechanisms Over HTTP", Internet Draft
1362     draft-khare-jepi-uppflow-00, W3C, August 1996. Document expired.
1363     [17] J. Miller et al, "PICS Label Syntax and Communication Protocols
1364     (Version 1.1)", W3C Recommendation REC-PICS-labels, W3C, 31
1365     October 1996
1366     [18] Y. Goland et al, "Extensions for Distributed Authoring and
1367     Versioning", Internet Draft, draft-jensen-webdav-ext-01, 26 March
1368     1997. This is work in progress.
1369     [19] N. Borenstein, "A User Agent Configuration Mechanism For
1370     Multimedia Mail Format Information", RFC 1524 pp. 12, Bellcore,
1371     September 1993.
1372    
1373    
1374    
1375     Frystyk, et al [Page 22]
1376    
1377    
1378    
1379    
1380    
1381    
1382     INTERNET DRAFT PEP Friday, November 21, 1997
1383    
1384     [20] J. Klensin, N. Freed, M. Rose, E. Stefferud, and D. Crocker.
1385     "SMTP Service Extensions", RFC 1869, MCI, Innosoft, Dover Beach
1386     Consulting, Network Management Associates, Brandenburg
1387     Consulting, November 1995.
1388     [21] D. Robinson, "The WWW Common Gateway Interface Version 1.1",
1389     Internet Draft draft-robinson-www-interface-01, February 1996.
1390     Document expired.
1391     [22] A. Baird-Smith, "Jigsaw: An object oriented server", W3C Note,
1392     June 1996
1393     [23] H. Frystyk, "Libwww Architecture", December 1996
1394     [24] R. Thau, "Design considerations for the Apache Server API", Fifth
1395     International World Wide Web Conference, May 6-10, 1996, Paris,
1396     France
1397     [25] Netscape Corporation, "The Netscape Server API"
1398     [26] Microsoft Corporation, "Internet Server API Documentation"
1399     [27] Open Market, Inc, "FastCGI - Restoring All CGI's Good Properties
1400     -- and Then Some"
1401     [28] Spyglass, "Spyglass MicroServer Application Development
1402     Interface"
1403     [29] J. Franks, "WN - a Server for the HTTP"
1404     [30] Roxen, "Introduction to Roxen Challenger"
1405    
1406     14. Acknowledgements
1407    
1408     The PEP protocol is the product of a substantial amount of
1409     investigation and collaboration. Dave Kristol did some of the first
1410     writing on HTTP extension mechanisms[15]. Jim Miller and Dave Raggett
1411     sketched out an initial design, which Rohit Khare wrote up in a number
1412     of drafts. Tim Berners-Lee, Anselm Baird-Smith, Paul Leach and Daniel
1413     Dardailler deserve special recognition for their efforts in commenting
1414     in the design phase of the protocol. Also thanks to Henning
1415     Schulzrinne, Anup Rao and Robert Lanphier for pointing out the
1416     generalities of PEP and providing support for integration with
1417     RTSP[12].
1418    
1419     This specification is a direct reflection of some implementation work:
1420     a client implementation in [23] (see the HTPEP module) and a server
1421     implementation by Eui-Suk Chung and Anit Chakraborty for the JEPI
1422     project.
1423    
1424     This document has benefited greatly from the comments of all those
1425     participating in the HTTP-WG. In addition to those already mentioned,
1426     the following individuals have contributed to this specification:
1427    
1428     o Eui-Suk Chung,
1429     o Don Eastlake,
1430     o Roy Fielding,
1431     o Jim Gettys,
1432     o Yaron Goland,
1433     o Phill Hallam-Baker,
1434    
1435    
1436     Frystyk, et al [Page 23]
1437    
1438    
1439    
1440    
1441    
1442    
1443     INTERNET DRAFT PEP Friday, November 21, 1997
1444    
1445     o Paul Hoffman,
1446     o Koen Holtman,
1447     o Ora Lassila,
1448     o Larry Masinter, and
1449     o Jim Whitehead
1450    
1451     15. Authors Addresses
1452    
1453     Dan Connolly
1454     Architecture Domain Lead, World Wide Web Consortium
1455     MIT Laboratory for Computer Science
1456     545 Technology Square
1457     Cambridge, MA 02139, U.S.A.
1458     Email: connolly@w3.org
1459    
1460     Rohit Khare
1461     Technical Staff, World Wide Web Consortium
1462     MIT Laboratory for Computer Science
1463     545 Technology Square
1464     Cambridge, MA 02139, U.S.A.
1465     Email: khare@w3.org
1466    
1467     Henrik Frystyk Nielsen
1468     Technical Staff, World Wide Web Consortium
1469     MIT Laboratory for Computer Science
1470     545 Technology Square
1471     Cambridge, MA 02139, U.S.A.
1472     Email: frystyk@w3.org
1473    
1474     Eric Prud'hommeaux
1475     Contractor, World Wide Web Consortium
1476     MIT Laboratory for Computer Science
1477     545 Technology Square
1478     Cambridge, MA 02139, U.S.A.
1479     Email: eric@w3.org
1480    
1481    
1482     Appendices
1483    
1484    
1485     16. Summary of PEP Interactions
1486    
1487     The following tables summarize the outcome of strength and scope rules
1488     in PEP transactions involving PEP compliant and non-PEP compliant HTTP
1489     proxies and origin servers. The summary is intended as a guide and
1490     index to the text, but is necessarily cryptic and incomplete. This
1491     summary should never be used or referenced separately from the
1492     complete PEP specification. The tables should be read as follows
1493    
1494     Standard processing
1495    
1496    
1497    
1498     Frystyk, et al [Page 24]
1499    
1500    
1501    
1502    
1503    
1504    
1505     INTERNET DRAFT PEP Friday, November 21, 1997
1506    
1507     The action taken by an ultimate recipient not understanding or
1508     ignoring the extension (see section 4.2)
1509    
1510     Extended processing
1511     The action taken by an ultimate recipient understanding and obeying
1512     the extension (see section 4.2)
1513    
1514     Forward extension
1515     The action taken by an intermediate party which is not an ultimate
1516     recipient (see section 9)
1517    
1518     Strip extension
1519     The action taken by an intermediate party which is the ultimate
1520     recipient (see section 9)
1521    
1522     420 (Policy Not Fulfilled)
1523     The response from an ultimate recipient not understanding or not
1524     wishing to obey the extension (see section 8.1)
1525    
1526     501 (Not Implemented)
1527     The response from an ultimate recipient not understanding the "PEP"
1528     method or "PEP-" method token prefix (see section 6)
1529    
1530     Table 1: Origin Server
1531    
1532     Scope Hop-by-hop End-to-end
1533    
1534     Strength Optional Required Optional Required
1535     (may) (must) (may) (must)
1536    
1537     PEP not Standard 501 (Not Standard 501 (Not
1538     supported processing Implemented)processing Implemented)
1539    
1540     Extension notStandard 420 (Policy Standard 420 (Policy
1541     supported processing Not processing Not
1542     Fulfilled) Fulfilled)
1543    
1544     Extension Extended Extended Extended Extended
1545     supported processing processing processing processing
1546    
1547    
1548     Table 2: Proxy Server
1549    
1550     Scope Hop-by-hop End-to-end
1551    
1552     Strength Optional Required Optional Required
1553     (may) (must) (may) (must)
1554    
1555     PEP not Strip 501 (Not Forward 501 (Not
1556     supported extension Implemented)extension Implemented)
1557    
1558     Extension notStrip 420 (Policy Forward Forward
1559     supported extension Not extension extension
1560     Fulfilled)
1561    
1562     Extension Extended Extended Extended Extended
1563     supported processing processing processing processing
1564    
1565    
1566     Frystyk, et al [Page 25]
1567    
1568    
1569    
1570    
1571    
1572    
1573     INTERNET DRAFT PEP Friday, November 21, 1997
1574    
1575     and strip and strip and strip and strip
1576    
1577    
1578    
1579    
1580     17. Examples
1581    
1582     The following examples show various scenarios using PEP in HTTP/1.1
1583     requests and responses. Information not essential for illustrating the
1584     examples is left out (referred to as "…")
1585    
1586    
1587     17.1 Client Queries Server for DAV
1588    
1589     In this example, the purpose of using PEP in the request is to
1590     determine whether a server understands and supports the Distributed
1591     Authoring and Versioning (DAV) protocol extension [18]. By making the
1592     request binding (see section 7), the client forces the server to
1593     process the extension declaration and obey the extension or report an
1594     error.
1595    
1596     PEP-GET /some.url HTTP/1.1
1597     Host: some.host
1598     PEP: {{map "http://www.w3.org/PEP/DAV"}}
1599    
1600     HTTP/1.1 200 OK
1601     PEP-Info: {{id "http://www.w3.org/PEP/DAV"} {for "/Henrik" *}}
1602     ...
1603    
1604     The response shows that the server does understand DAV and that the
1605     client can use it on all resources matching the prefix "/Henrik" on
1606     that server. The policy is informational and other factors like access
1607     control may prevent the client from actually using DAV on any of these
1608     resources.
1609    
1610     PEP does not distinguish between querying about or using an extension
1611     - the PEP declaration is identical. Whether it in fact is a query may
1612     depend on the request method name and request modifiers.
1613    
1614    
1615     17.2 Client Informs Server about ZipFlate Compression Extension
1616    
1617     This example shows a client informing a server that it is capable of
1618     handling the zipflate compression extension in a response. By issuing
1619     an extension policy instead of an extension declaration, the client
1620     indicates that the extension is not used in the request.
1621    
1622    
1623    
1624    
1625    
1626    
1627    
1628    
1629    
1630     Frystyk, et al [Page 26]
1631    
1632    
1633    
1634    
1635    
1636    
1637     INTERNET DRAFT PEP Friday, November 21, 1997
1638    
1639     GET /Index HTTP/1.1
1640     Host: some.host
1641     PEP-Info: {{id "http://www.w3.org/PEP/Encoding"}}
1642    
1643     HTTP/1.1 200 OK
1644     PEP: {{map "http://www.w3.org/PEP/Encoding"}}
1645     Cache-Control: no-transform
1646     Vary: *
1647     ...
1648    
1649     The response shows that the server knows the extension and decides to
1650     use it in the response. It furthermore includes the no-transform
1651     cache-control directive in order to avoid that proxies add their own
1652     content-coding to the message (see section 10.2) and a Vary header
1653     field indicating that a cache may not use the response to reply to a
1654     subsequent request without revalidation.
1655    
1656     In this example, the client could have used an extension declaration
1657     of strength "may" instead of an extension policy to achieve the same
1658     effect. The request would not have been affected as the compression
1659     applies to message bodies and not headers. If the request were to
1660     include a message body, however, the difference would be whether the
1661     zipflate extension was applied to that body or not.
1662    
1663    
1664     17.3 Server Uses Content-Digest Extension
1665    
1666     This example shows a server applying the Content-Digest extension to a
1667     response message indicating that the client may ignore it. The client
1668     has not indicated whether it supports the extension or even if it
1669     supports PEP.
1670    
1671     GET /Index HTTP/1.1
1672     Host: some.host
1673    
1674     HTTP/1.1 200 OK
1675     PEP: {{map "http://www.w3.org/PEP/Digest" 4-}}
1676     4-Content-Digest: "a0b1c2d3e4f5g6h7i8j9"
1677     Cache-Control: max-age=3600
1678     ...
1679    
1680     The response is fully cachable and does not require revalidation when
1681     replying to subsequent requests.
1682    
1683    
1684     17.4 Server Requires Client to use Payment Extension
1685    
1686     The last example shows how a server requires a client to use a micro-
1687     payment extension in order to access a resource causing an additional
1688     roundtrip using the 420 (Policy Not Fulfilled) status code (see
1689     section 8.1). The first request does not contain any PEP constructs
1690     leading to the error message. A non-PEP compliant client will treat
1691     this as a 400 (Bad Request) status code and will not be able to
1692    
1693     Frystyk, et al [Page 27]
1694    
1695    
1696    
1697    
1698    
1699    
1700     INTERNET DRAFT PEP Friday, November 21, 1997
1701    
1702     fulfill the server's requirement in a second request (see [7], section
1703     10.4.1)
1704    
1705     GET /Index HTTP/1.1
1706     Host: some.host
1707    
1708     420 Policy Not Fulfilled
1709     PEP-Info: {{id "http://www.w3.org/PEP/MiniPayment"}
1710     {params {Price 0.02USD}} {strength must}}
1711    
1712     PEP-GET /Index HTTP/1.1
1713     Host: some.host
1714     PEP: {{map "http://www.w3.org/PEP/MiniPayment" 12-}
1715     {strength must}}
1716     12-Price: 0.02USD
1717    
1718     HTTP/1.1 200 OK
1719     ...
1720    
1721     The actual price is passed as an extra parameter in the extension
1722     policy. The client agrees to the price and issues a new request
1723     containing the proper extension declaration. If it did not agree with
1724     the price, it could have tried a lower price and depending on the
1725     policy of that resource, the server may have responded positively.
1726    
1727    
1728    
1729    
1730    
1731    
1732    
1733    
1734    
1735    
1736    
1737    
1738    
1739    
1740    
1741    
1742    
1743    
1744    
1745    
1746    
1747    
1748    
1749    
1750    
1751    
1752    
1753    
1754     Frystyk, et al [Page 28]

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24