1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
Network Working Group D. Connolly |
7 |
Internet Draft W3 Consortium |
8 |
Category: Informational January 1997 |
9 |
Expire in six months |
10 |
|
11 |
|
12 |
PEP: an Extension Mechanism for HTTP |
13 |
|
14 |
1. Status of this Document |
15 |
|
16 |
This document is [not yet] an Internet-Draft. Internet-Drafts are |
17 |
working documents of the Internet Engineering Task Force (IETF), its |
18 |
areas, and its working groups. Note that other groups may also |
19 |
distribute working documents as Internet-Drafts. |
20 |
|
21 |
Internet-Drafts are draft documents valid for a maximum of six months |
22 |
and may be updated, replaced, or obsoleted by other documents at any |
23 |
time. It is inappropriate to use Internet-Drafts as reference |
24 |
material or to cite them other than as "work in progress". |
25 |
|
26 |
To learn the current status of any Internet-Draft, please check the |
27 |
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow |
28 |
Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), |
29 |
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or |
30 |
ftp.isi.edu (US West Coast). |
31 |
|
32 |
Distribution of this document is unlimited. Please send comments to |
33 |
the HTTP working group at http-wg@cuckoo.hpl.hp.com. Discussions of |
34 |
the working group are archived at |
35 |
http://www.ics.uci.edu/pub/ietf/http/. |
36 |
|
37 |
This document is also available as W3 Consortium Working Draft WD- |
38 |
http-pep-970131. The most up-to-date current version is available at |
39 |
http://www.w3.org/pub/WWW/TR/WD-http-pep. |
40 |
|
41 |
The contribution of W3C staff time to the HTTP workin group is part |
42 |
of the W3C HTTP Activity. |
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
Connolly Internet Draft [Page 1] |
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
65 |
|
66 |
|
67 |
Abstract |
68 |
|
69 |
HTTP is an extensible protocol. PEP is an extension mechanism |
70 |
designed to address the tension between private agreement and public |
71 |
specification and to accomodate extension of HTTP clients and servers |
72 |
by software components. |
73 |
|
74 |
The mechanism is to associate each extension with a URL, and use a |
75 |
few new header fields to carry the extension identifier and related |
76 |
information from HTTP clients, thru proxies and intermediaries, to |
77 |
servers, and back again. |
78 |
|
79 |
Contents |
80 |
1. Status of this Document ........................................ 1 |
81 |
2. Introduction ................................................... 2 |
82 |
2.1. Requirements .............................................. 3 |
83 |
3. Extension Identifiers .......................................... 4 |
84 |
3.1. The Protocol Header Field ................................. 5 |
85 |
4. Notification ................................................... 6 |
86 |
4.1. 420: Bad Extensions ....................................... 8 |
87 |
5. Extension Header Fields ........................................ 8 |
88 |
6. Extension Encodings ............................................ 9 |
89 |
7. Security Considerations ....................................... 10 |
90 |
9. Normative References .......................................... 11 |
91 |
10. Bibliography: Informative References ......................... 11 |
92 |
|
93 |
2. Introduction |
94 |
|
95 |
This document presents PEP, and extension mechanism for HTTP. The |
96 |
PEP design is the result of analyzing a variety of HTTP extensions |
97 |
and extension mechanisms, and the motivation behind them. This is |
98 |
discussed in requirements section (Section 2.1). |
99 |
|
100 |
The section on extension identifiers discusses the mechanism itself, |
101 |
which is to associate each extension with a URL, and use a new header |
102 |
field, Protocol: to carry the extension identifier and related |
103 |
information from HTTP clients, thru proxies and intermediaries, to |
104 |
servers, and back again. |
105 |
|
106 |
The next section, Notification, provides information providers with a |
107 |
mechanism to inform clients of extension policies, that is, which |
108 |
extensions should or should not be used to access resources. |
109 |
|
110 |
The Extension Header Fields section addresses the use of new HTTP |
111 |
headers in extensions. |
112 |
|
113 |
After Security Considerations, and a Syntax Reference, appendices |
114 |
discuss Considerations for Defining Extensions and the use of PEP in |
115 |
and with software components. |
116 |
|
117 |
|
118 |
|
119 |
|
120 |
|
121 |
|
122 |
Connolly Internet Draft [Page 2] |
123 |
|
124 |
|
125 |
|
126 |
|
127 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
128 |
|
129 |
|
130 |
2.1. Requirements |
131 |
|
132 |
HTTP is being used for an increasing number of applications |
133 |
involving distributed authoring, collaboration, printing, and |
134 |
various RPC like protocols. Often these extensions are deployed |
135 |
dynamically, extending existing applications. They motivate the |
136 |
need to independently introduce extensions and new features to |
137 |
HTTP in such a way that 1) They are orthogonal to other |
138 |
extensions. 2) They can be deployed automatically and |
139 |
dynamically. |
140 |
|
141 |
This requires: |
142 |
|
143 |
* |
144 |
That conforming HTTP peers supporting a particular |
145 |
protocol extension or |
146 |
feature should be able to employ this in real time with |
147 |
no prior agreement; |
148 |
* |
149 |
That it should be possible for one party having a |
150 |
capability for a new protocol |
151 |
to require that the the other party either understand |
152 |
and abide by the new |
153 |
protocol or abort the operation; |
154 |
* |
155 |
That the HTTP protocol should still be able to work |
156 |
through proxies - especially |
157 |
caching proxies; |
158 |
* |
159 |
That, either directly using PEP or using a new protocol |
160 |
introduced using |
161 |
PEP, negotiation of matching capabilities should be |
162 |
possible, as required |
163 |
for the JEPI project and similar applications. |
164 |
|
165 |
This form for extensibility is not supported by HTTP/1.1. PEP is a |
166 |
framework to satisfy these requirements. |
167 |
|
168 |
The current design does not meet all the requirements. See <a |
169 |
href="#future">Future Work for details. |
170 |
|
171 |
Related Work |
172 |
|
173 |
HTTP is an extensible protocol; applications have exploited its |
174 |
extensibility along a number of degrees of freedom: |
175 |
|
176 |
URL path |
177 |
|
178 |
The URL path allows different functionality in different parts |
179 |
of the URL space[URL]. This has been exploited in [CGI], and |
180 |
HTML forms <a href="#HTML2">[HTML2.0] for example. Since then, |
181 |
it has been combined with software component technology (such |
182 |
|
183 |
|
184 |
|
185 |
Connolly Internet Draft [Page 3] |
186 |
|
187 |
|
188 |
|
189 |
|
190 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
191 |
|
192 |
|
193 |
as shared libraries, DLLs, etc.) for use in [NSAPI], [ISAPI], |
194 |
[Apache], [OM], [Spy95]. |
195 |
|
196 |
media type |
197 |
|
198 |
The request and response payload data is typed; new internet |
199 |
media types can be introduced. A host of web extensions are |
200 |
based on the extenion of user agents to handle internet media |
201 |
types [MAILCAP]. |
202 |
|
203 |
method names |
204 |
|
205 |
New method names can be added. (@@Cite BROWSE, MKDIR in |
206 |
aolserver) |
207 |
|
208 |
header fields |
209 |
|
210 |
New headers may be introduced: entity headers, request headers, |
211 |
or response headers. For example, [STATE] |
212 |
|
213 |
Using the media type and/or URL to extend the web is an extension |
214 |
within, rather than beyond, the HTTP protocol. On the other hand, |
215 |
using new request header fields is a change to the HTTP protocol |
216 |
itself ([HTTP] section 5.3 Request Header Fields). |
217 |
|
218 |
3. Extension Identifiers |
219 |
|
220 |
The agents in an HTTP transaction are a client and a server, which |
221 |
send HTTP messages to each other However, semantically, an HTTP |
222 |
trasacion is between a client party (for example, the referent of the |
223 |
From: header field) and a the principle responsible for the |
224 |
publication of a given resource. |
225 |
|
226 |
The publishing party is basically the one responsible for the mapping |
227 |
between the URI and any representation of the resource to which it |
228 |
refers. Exactly who takes this role is out of the scope discusion of |
229 |
this document; but for example, it may be the writer of a document or |
230 |
the server administrator or the organization running the server. |
231 |
|
232 |
The HTTP specification, which codifies the agreement between these |
233 |
parties, is subject to thorough community review. While any extension |
234 |
can be defined and used by private agreement, the web provides a |
235 |
medium to deploy extensions to the global community without |
236 |
centralized control. |
237 |
|
238 |
PEP exploits this aspect of the web, and uses URLs to identify |
239 |
extensions. This allows parties to learn about extensions and decide |
240 |
which ones to participate in by dereferncing their URL. This learning |
241 |
may be done by humans, or it may be done my machines aquiring |
242 |
software components. |
243 |
|
244 |
See Considerations for Defining Extensions for details. |
245 |
|
246 |
|
247 |
|
248 |
Connolly Internet Draft [Page 4] |
249 |
|
250 |
|
251 |
|
252 |
|
253 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
254 |
|
255 |
|
256 |
3.1. The Protocol Header Field |
257 |
|
258 |
Each protocol extension has an extension identifier, which is a |
259 |
URL[URL]. The extensions used in a message are declared using the |
260 |
Protocol request/response header field. |
261 |
|
262 |
Along with the extension identifier, an extension may define any |
263 |
number of parameters. See also, Extension Header Fields and |
264 |
Extension Encodings. |
265 |
|
266 |
The syntax is: |
267 |
|
268 |
Protocol = "Protocol" ":" 1#extension-decl |
269 |
extension-decl = "{" extension-id *ext-info "}" |
270 |
ext-info = params | headers | enc |
271 |
params = "{" "params" *bagitem "}" |
272 |
headers = "{" "headers" 1*token "}" |
273 |
enc = "{" "enc" 1*token "}" |
274 |
|
275 |
bag = "{" bagname 1*LWS *bagitem "}" |
276 |
bagname = token | URI |
277 |
bagitem = bag | token | quoted-string |
278 |
|
279 |
For example: |
280 |
|
281 |
GET /a-document HTTP/1.1 |
282 |
Protocol: {http://some.org/an-extension} |
283 |
|
284 |
HTTP/1.1 200 OK |
285 |
Protocol: {http://some.org/an-extension} |
286 |
Vary: Protocol |
287 |
Content-Type: text/plain |
288 |
|
289 |
Glad you're using an-extension! |
290 |
|
291 |
Note the use of the Vary header to notify proxies that responses |
292 |
to GET /a-document depend on the Protocol header fields used in |
293 |
the request. |
294 |
|
295 |
Hop-by-hop Extensions |
296 |
|
297 |
Extensions declared with the Protocol header field are end-to-end |
298 |
extensions, transparent to intermediaries. Hop-by-hop extensions |
299 |
are declared with the C-Protocol header field, in conjunction with |
300 |
the Connection header (<a href="#HTTP">[HTTP}, section @@). |
301 |
|
302 |
The syntax is essentially the same as the Protocol header field. |
303 |
|
304 |
C-Protocol = "C-Protocol" ":" 1#extension-decl |
305 |
|
306 |
|
307 |
|
308 |
|
309 |
|
310 |
|
311 |
Connolly Internet Draft [Page 5] |
312 |
|
313 |
|
314 |
|
315 |
|
316 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
317 |
|
318 |
|
319 |
3.2. Considerations for Defining Extensions |
320 |
|
321 |
While the protocol extension definition should be published at the |
322 |
address of the extension identifier, this is not strictly |
323 |
necessary. The only absolute requirement is that distinct names be |
324 |
used for distinct semantics. |
325 |
|
326 |
For example, one way to achive this is to use an mid:, cid:, or |
327 |
uuid: URL. The association between the extension identifier and |
328 |
the specification might be made by distributing a specification |
329 |
which references the extension identifier. Care must be taken not |
330 |
to distribute conflicting specifications which reference the same |
331 |
name. |
332 |
|
333 |
Even when the web is used to publish extension specifications, |
334 |
care must be taken that the specification made available at that |
335 |
address does not change significantly over time. One agent may |
336 |
associate the identifier with the old semantics, and another might |
337 |
associate it with the new semantics. |
338 |
|
339 |
Bootstrapping and Dynamic Loading |
340 |
|
341 |
The extension definition may be made available in different |
342 |
representations. For example, a software component that implements |
343 |
the specification may reside at the same address as a human- |
344 |
readable specification (distinguished by content negotation). |
345 |
|
346 |
The human-readable representation serves to document the extension |
347 |
and encourage deployment, while the software component to allows |
348 |
clients and servers to be dynamically extended. |
349 |
|
350 |
Caching and Connections |
351 |
|
352 |
For each aspect of an extension, the interaction with other |
353 |
aspects of HTTP/1.1 must be fully specified, and the issues of |
354 |
compatibility should be discussed. For example, any extension |
355 |
headers which are not strictly entity headers require careful |
356 |
consideration. See [HTTP] sections 13.5.1. (@@more references |
357 |
were lost in an editing disaster) |
358 |
|
359 |
4. Notification |
360 |
|
361 |
Some extensions are used spontaneously by participating clients; for |
362 |
example, a client may be configured to use and extension, or a user |
363 |
interface option may trigger the use of an extension. |
364 |
|
365 |
But in many cases, the origin server dictates the use of one or more |
366 |
extensions. In this case, it is useful for the server to communicate |
367 |
its policies to the client. |
368 |
|
369 |
The server may notify the client that some resources should be |
370 |
accessed using one or more extensions with the Protocol-Info header |
371 |
|
372 |
|
373 |
|
374 |
Connolly Internet Draft [Page 6] |
375 |
|
376 |
|
377 |
|
378 |
|
379 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
380 |
|
381 |
|
382 |
field. The resources are specified by a relative or absolute URI, |
383 |
with an optional wildcard flag indicating that the notification |
384 |
applies to all URIs containing the specified URI as a prefix. |
385 |
|
386 |
The strength of the policy for an extension for the resources is one |
387 |
of req, ref, or opt. |
388 |
|
389 |
req |
390 |
Required. The resource must be accessed using the extension. |
391 |
|
392 |
opt |
393 |
Optional. The resource may be accessed using the extension or not |
394 |
using the extension. |
395 |
|
396 |
ref |
397 |
Refused. The resource may not be accessed using the extension. |
398 |
|
399 |
The syntax is: |
400 |
|
401 |
Protocol-Info = "Protocol-Info" ":" 1#policy-decl |
402 |
policy-decl = "{" extension-id *policy-info "}" |
403 |
policy-info = str | params | headers | scope | for |
404 |
str = "{" "str" ("req" | "ref" | "opt" ) "}" |
405 |
scope = "{" "scope" ( "conn" | "origin" ) "}" |
406 |
for = "{" "for" URI [ wildcard ] "}" |
407 |
wildcard = "*" |
408 |
|
409 |
Note that a Protocol-Info with a for parameter may give information |
410 |
about a different resource from the resource described by the other |
411 |
header fields in the same message. Nonetheless, the freshness of the |
412 |
information in the Protocol-Info header field is the same as the rest |
413 |
of the header fields (which see [HTTP] section 13.2, "Expiration |
414 |
Model"). |
415 |
|
416 |
The notice is strictly advisory. The client should heed the notice on |
417 |
its next request to the relavent server, unless the delay between |
418 |
receiving the notice and that next request far exceeds the freshness |
419 |
of the reply containing the Protocol-Info header. |
420 |
|
421 |
For example, consider the case of an HTML form, where the associated |
422 |
ACTION resource requires a payment extension. In the response that |
423 |
provides the form, the server may notify the client about the ACTION |
424 |
resource: |
425 |
|
426 |
HTTP/1.1 200 OK |
427 |
Content-Type: text/html |
428 |
Protocol-Info: {http://some.org/payment-thingy {for /cgi-bin/buy *} {str req}} |
429 |
|
430 |
<form action="/cgi-bin/buy"> |
431 |
... |
432 |
|
433 |
|
434 |
|
435 |
|
436 |
|
437 |
Connolly Internet Draft [Page 7] |
438 |
|
439 |
|
440 |
|
441 |
|
442 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
443 |
|
444 |
|
445 |
4.1. 420: Bad Extensions |
446 |
|
447 |
A server policy may require (or refuse) the use of some extensions |
448 |
in some circumstances. If a request fails to fulfill the policy, |
449 |
the server should respond with a 420 status code (Bad Extensions) |
450 |
and specify the policy using the <a href="#request- |
451 |
syntax">Protocol-Info header field. |
452 |
|
453 |
Implementors may note the similarity to the way authentication |
454 |
challenges are issued with the 401 (Unauthorized) status code. |
455 |
|
456 |
5. Extension Header Fields |
457 |
|
458 |
Each HTTP extension that uses the PEP mechanism may define one or |
459 |
more extension header fields. |
460 |
|
461 |
Note that params in extension declarations provide the same facility |
462 |
with less complexity, and provide a syntactic structure that closely |
463 |
resembles the semantic structure. This mechanism is redundant, but |
464 |
provided for the case where the use of header fields is essential. |
465 |
|
466 |
Each extension header field present in a message is associated with |
467 |
exactly one protocol extension identifier in a Protocol or C-Protocol |
468 |
header field. |
469 |
|
470 |
It is an error (400 Bad Request) to include the same header field |
471 |
name in two different extension-decls in the same message, and it is |
472 |
an error if a header field name matches wildcard prefixes in more |
473 |
than one extension-decl. |
474 |
|
475 |
Wildcard matching is as follows: A header field name N matches a |
476 |
prefix P-* iff N is the concatenation of Q- and any string S, where P |
477 |
and Q are the same except for differences in the case of letters. |
478 |
|
479 |
For example: |
480 |
|
481 |
GET /newsletter.html HTTP/1.1 |
482 |
Protocol: {http//www.someschool.edu/HTTP/MicroPay {headers micropay} } |
483 |
Micropay: USD $0.003 creds:lw3jlkwj3lkw3ljk |
484 |
|
485 |
or using a wildcard prefix: |
486 |
|
487 |
GET /newsletter.html HTTP/1.1 |
488 |
Protocol: {http//www.someschool.edu/HTTP/MicroPay {headers M-*} } |
489 |
M-micropay: USD $0.003 creds:lw3jlkwj3lkw3ljk |
490 |
|
491 |
Header Field Name Collisions |
492 |
|
493 |
It is possible that two extensions specify the use of the same |
494 |
header field name. If two such extensions are used in the same |
495 |
message, the name collision must be resolved, either by prefixing |
496 |
or replacing the header names. |
497 |
|
498 |
|
499 |
|
500 |
Connolly Internet Draft [Page 8] |
501 |
|
502 |
|
503 |
|
504 |
|
505 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
506 |
|
507 |
|
508 |
The header field names in the message can be replaced with |
509 |
arbitrary names; the header fields must be given a distinguished |
510 |
order in the protocol extension definition. This order can be used |
511 |
to associate the replacement names with the original semantics. |
512 |
|
513 |
For example, consider extensions E1 and E2. E1 involves headers |
514 |
Tax and Price, and E2 involves Price and Color. |
515 |
|
516 |
These might be combined in the same message as: |
517 |
|
518 |
Protocol: {E1 {headers price tax}} |
519 |
Price: $2.99 |
520 |
Tax: 8.25% |
521 |
Protocol: {E2 {headers AB12-price color }} |
522 |
AB12-Price: $2.99 |
523 |
Color: red |
524 |
|
525 |
Since the first extension header specified in E2 is Price, the |
526 |
semantics of the AB12-price header are clear. |
527 |
|
528 |
Header prefixing is similar; if the name in the protocol extension |
529 |
specification is N, and the distinguishing prefix is P-, then the |
530 |
name used in the message is P-N. For example: |
531 |
|
532 |
Protocol: {E1 {headers price tax}} |
533 |
Price: $2.99 |
534 |
Tax: 8.25% |
535 |
Protocol: {E2 {headers AB12-*}} |
536 |
AB12-Price: $2.99 |
537 |
AB12-Color: red |
538 |
|
539 |
6. Extension Encodings |
540 |
|
541 |
Each HTTP extension that uses the PEP mechanism may define one or |
542 |
more extension content encodings. Each extension content encoding in |
543 |
the Content-Encoding header field present in a message is associated |
544 |
with exactly one protocol extension identifier in a Protocol header |
545 |
field. |
546 |
|
547 |
The association is either by name (case insensitive) or by wildcard |
548 |
prefix, as above. Name collisions must be resolved by prefixing. |
549 |
|
550 |
For example: |
551 |
|
552 |
|
553 |
|
554 |
|
555 |
|
556 |
|
557 |
|
558 |
|
559 |
|
560 |
|
561 |
|
562 |
|
563 |
Connolly Internet Draft [Page 9] |
564 |
|
565 |
|
566 |
|
567 |
|
568 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
569 |
|
570 |
|
571 |
GET /sparse-document HTTP/1.1 |
572 |
Protocol: {http://some.org/special-encoding {enc special}} |
573 |
|
574 |
HTTP/1.1 200 OK |
575 |
Protocol: {http://some.org/special-encoding {enc special}} |
576 |
Content-Encoding: special |
577 |
Content-Type: application/sparse-data |
578 |
|
579 |
... sparse data encoded with "special" encoding ... |
580 |
|
581 |
7. Security Considerations |
582 |
|
583 |
The for parameter allows one party to give information about the |
584 |
extensions used by another party's resources. The parties may |
585 |
provide resources on different servers, or at different addresses on |
586 |
the same server. While there is no reasonable way for clients to |
587 |
distinguish between the parties responsible for different resources |
588 |
at the same server, clients should ignore information given by one |
589 |
server about another unless they have reason to trust it, or reason |
590 |
to believe that trusting it will have no significant negative |
591 |
consequences. |
592 |
|
593 |
Future Work |
594 |
|
595 |
Further design and implementation work is necessary to completely |
596 |
meet the requirements for PEP. |
597 |
|
598 |
Binding Extensions |
599 |
|
600 |
This design does not completely meet the requirement that one |
601 |
party can require another party to participate in an extension. An |
602 |
earlier draft specified a new version number and the use of {str |
603 |
req} in extension-declarations. But this will have no impact on |
604 |
HTTP 1.1 clients and servers, and hence does not meet the |
605 |
requirement. |
606 |
|
607 |
One possibility is a change to the syntax of methods in HTTP |
608 |
request for the purpose of expressing binding extensions. For |
609 |
example: |
610 |
|
611 |
BINDING PUT /a-resource HTTP/1.2 |
612 |
Protocol: {http://some.org/rights-management {str req} |
613 |
{params {copyright-remains-with-client} |
614 |
{nonexclusive-right-to-redistribute} } |
615 |
Content-Type: text/html |
616 |
|
617 |
<!doctype html ... |
618 |
|
619 |
Unfortunately, this does not accomodate the case of a binding end- |
620 |
to-end extension that passes through a proxy. |
621 |
|
622 |
|
623 |
|
624 |
|
625 |
|
626 |
Connolly Internet Draft [Page 10] |
627 |
|
628 |
|
629 |
|
630 |
|
631 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
632 |
|
633 |
|
634 |
Mult-Transaction Negotiation |
635 |
|
636 |
An earlier draft of PEP included a mechanism for multi-transaction |
637 |
negotiation. Implementation experience showed the need to identify |
638 |
clients across transactions, which the mechanism did not provide. |
639 |
|
640 |
It is possible, within the design specified here, to do multi- |
641 |
transaction negotiation within an extension (for example, by |
642 |
putting information to disambiguate conversation threads in the |
643 |
params). |
644 |
|
645 |
Other possibilities under consideration include the use of state |
646 |
management "cookies" to disambiguate clients, or the use of an |
647 |
analagous PEP-specific mechanism. |
648 |
|
649 |
8. Appendix: Considerations for the Design of a PEP Software Component |
650 |
Interface |
651 |
|
652 |
This section got blown away in an editing disaster. The editor will |
653 |
attempt to include it in a future draft. |
654 |
|
655 |
9. Normative References |
656 |
|
657 |
[URL] |
658 |
|
659 |
T. Berners-Lee and L. Masinter and M. McCahill, RFC 1738: Uniform |
660 |
Resource Locators (URL), pp. 25, Dec 1994. |
661 |
|
662 |
[HTTP] |
663 |
R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk, T. Berners-Lee, |
664 |
Hypertext Transfer Protocol -- HTTP/1.1. RFC 2068 UC Irvine, DEC, |
665 |
DEC, W3C/MIT, W3C/MIT, January 1997 |
666 |
|
667 |
10. Bibliography: Informative References |
668 |
|
669 |
[CGI] |
670 |
|
671 |
D. Robinson The WWW Common Gateway Interface Version 1.1, work in |
672 |
progress 15 February 1996 |
673 |
|
674 |
[HTML2] |
675 |
T. Berners-Lee & D. Connolly, November 1995. Hypertext Markup |
676 |
Language - 2.0 RFC 1866 |
677 |
|
678 |
[NSAPI] |
679 |
|
680 |
<A |
681 |
HREF="http://home.netscape.com/newsref/std/server_api.html">Netscape |
682 |
server API documentation, 1995 |
683 |
|
684 |
|
685 |
|
686 |
|
687 |
|
688 |
|
689 |
Connolly Internet Draft [Page 11] |
690 |
|
691 |
|
692 |
|
693 |
|
694 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
695 |
|
696 |
|
697 |
[ISAPI] |
698 |
|
699 |
ISAPI documentation, Microsoft Corporation, in ActiveX Alpha SDK, |
700 |
http://www.msn.com/download/sdk/msactivedk.zip, 1996 |
701 |
|
702 |
[Apache] |
703 |
|
704 |
Thau, Robert, <A |
705 |
HREF="http://www5conf.inria.fr/fich_html/papers/P20/Overview.html">Design |
706 |
considerations for the Apache Server API, Fifth International |
707 |
World Wide Web Conference, May 6-10, 1996, Paris, France |
708 |
|
709 |
[OM] |
710 |
|
711 |
<A |
712 |
HREF="http://www.openmarket.com/library/WhitePapers/Server/index.html">OpenMarket |
713 |
server technical overview sometime in 1996. |
714 |
|
715 |
[Spy95] |
716 |
|
717 |
<A |
718 |
HREF="http://www.spyglass.com/techspec/specs/adi_spec.html">Spyglass |
719 |
Server Application Development Interface Spyglass, Inc. version |
720 |
1.17 1995/09/11 |
721 |
|
722 |
[MAILCAP] |
723 |
|
724 |
N. Borenstein, RFC 1524: A User Agent Configuration Mechanism For |
725 |
Multimedia Mail Format Information, pp. 12, Sep 1993. |
726 |
|
727 |
[STATE] |
728 |
|
729 |
D. Kristol, L. Montulli, 22 Nov 1996. "HTTP State |
730 |
Management Mechanism", <A href="ftp://ds.internic.net/internet- |
731 |
drafts/draft-ietf-http-state-mgmt-05.txt">RFC xxxx. Proposed |
732 |
Standard Approved by the IESG, not yet |
733 |
assigned an RFC. |
734 |
|
735 |
[Kristol95] |
736 |
David M. Kristol, A Proposed Extension Mechanism for HTTP, Jan |
737 |
1995. D. Kristol, A Proposed Extension Mechanism for HTTP, |
738 |
Internet Draft, January 1995 (Work in Progress, Expired). |
739 |
|
740 |
[RFC822] |
741 |
D. H. Crocker. Standard for the Format of ARPA Internet Text |
742 |
Messages. STD 11, RFC 822, UDEL, August 1982. |
743 |
|
744 |
[UPP] D. Eastlake, "Universal Payment Preamble", Internet |
745 |
Draft CyberCash, March 1996 (Work in Progress). |
746 |
|
747 |
|
748 |
|
749 |
|
750 |
|
751 |
|
752 |
Connolly Internet Draft [Page 12] |
753 |
|
754 |
|
755 |
|
756 |
|
757 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
758 |
|
759 |
|
760 |
[JEPI] |
761 |
JEPI, "Selecting Payment Mechanisms Over HTTP", Internet |
762 |
Draft, August 1996 (Work in Progress). [Also available as |
763 |
http://www.w3.org/pub/WWW/Payments/JEPI/draft-jepi- |
764 |
uppflow-00.html] |
765 |
|
766 |
[MAILEXT] J. Klensin, N. Freed, M. Rose, E. Stefferud, and D. |
767 |
Crocker. "SMTP Service Extensions." RFC 1869. MCI, |
768 |
Innosoft, Dover Beach Consulting, Network Management Associates, |
769 |
Brandenburg Consulting, November 1995. |
770 |
|
771 |
[PICS] J. Miller. PICS Label Syntax and Communication Protocols |
772 |
(Version 1.1).; W3C Proposed Recommendation PR-PICS-services , W3 |
773 |
Consortium/MIT, August 1996. |
774 |
|
775 |
[SpyClient] |
776 |
|
777 |
<A |
778 |
HREF="http://www.spyglass.com/techspec/wpapers/sdkintro.html">Spyglass |
779 |
Client Software Development Kit |
780 |
|
781 |
[SpyEcom] |
782 |
|
783 |
<A |
784 |
HREF="http://www.spyglass.com/techspec/wpapers/ecomstd.html">Electronic |
785 |
Commerce Standards for the WWW |
786 |
|
787 |
[WN] |
788 |
|
789 |
WN server documentation, 1995 |
790 |
|
791 |
[Spinner] |
792 |
|
793 |
Spinner server technical overview, <A name="bib8" |
794 |
href="http://spinner.infovav.se/overview.html">http://spinner.infovav.se/overview.html, |
795 |
1995 |
796 |
|
797 |
Acknowledgements |
798 |
|
799 |
This draft of PEP is the product of a substantial amount of |
800 |
investigation and collaboration. Dave Kristol did some of the first |
801 |
writing on HTTP extension mechanisms. <a |
802 |
href="#Kristol95">[Kristol95]. Jim Miller and Dave Raggett sketched |
803 |
out an initial design, which Rohit Khare wrote up in a number of |
804 |
drafts. |
805 |
|
806 |
This draft is a direct reflection of some implementation work: a |
807 |
client implementation Henrik Frystyk Nielson et. al. (see the <a |
808 |
href="http://www.w3.org/pub/WWW/Library/src/HTPEP.html">HTPEP module |
809 |
in libwww) and a server implementation by Eui Suk Chung and Anit |
810 |
Chakraborty for the JEPI project. |
811 |
|
812 |
|
813 |
|
814 |
|
815 |
Connolly Internet Draft [Page 13] |
816 |
|
817 |
|
818 |
|
819 |
|
820 |
$Date: 1997/01/31 23:05:32 $ PEP January 1997 |
821 |
|
822 |
|
823 |
Tim Berners-Lee contributed significantly to the requirements |
824 |
section, and Daniel Dardailler provided extensive review ocmments. |
825 |
|
826 |
Author's Addresses |
827 |
|
828 |
Dan Connolly |
829 |
Architecture Domain Lead, W3 Consortium |
830 |
MIT Laboratory for Computer Science |
831 |
545 Technology Square |
832 |
Cambridge, MA 02139, U.S.A. |
833 |
Tel: +1 (512) 310 2971 Email: connolly@w3.org |
834 |
|
835 |
Rohit Khare |
836 |
Technical Staff, W3 Consortium |
837 |
MIT Laboratory for Computer Science |
838 |
545 Technology Square |
839 |
Cambridge, MA 02139, U.S.A. |
840 |
Tel: +1 (617) 253 5884 |
841 |
Fax: +1 (617) 258 5999 Email: khare@w3.org |
842 |
|
843 |
Henrik Frystyk Nielson |
844 |
Technical Staff, W3 Consortium |
845 |
MIT Laboratory for Computer Science |
846 |
545 Technology Square |
847 |
Cambridge, MA 02139, U.S.A. |
848 |
Tel: +1 (617) 253 8143 |
849 |
Fax: +1 (617) 258 5999 Email: frystyk@w3.org |
850 |
|
851 |
|
852 |
|
853 |
|
854 |
|
855 |
|
856 |
|
857 |
|
858 |
|
859 |
|
860 |
|
861 |
|
862 |
|
863 |
|
864 |
|
865 |
|
866 |
|
867 |
|
868 |
|
869 |
|
870 |
|
871 |
|
872 |
|
873 |
|
874 |
|
875 |
|
876 |
|
877 |
|
878 |
Connolly Internet Draft [Page 14] |
879 |
|