draft-ietf-webdav-redirectref-protocol-06.txt | draft-ietf-webdav-redirectref-protocol-07.txt | |||
---|---|---|---|---|
WEBDAV Working Group J. Whitehead | WEBDAV Working Group J. Whitehead | |||
Internet-Draft U.C. Santa Cruz | Internet-Draft U.C. Santa Cruz | |||
Expires: April 19, 2004 G. Clemm | Expires: May 17, 2004 G. Clemm | |||
IBM | IBM | |||
J. Reschke, Ed. | J. Reschke, Ed. | |||
greenbytes | greenbytes | |||
October 20, 2003 | November 17, 2003 | |||
WebDAV Redirect Reference Resources | WebDAV Redirect Reference Resources | |||
draft-ietf-webdav-redirectref-protocol-06 | draft-ietf-webdav-redirectref-protocol-07 | |||
Status of this Memo | Status of this Memo | |||
This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that other | |||
groups may also distribute working documents as Internet-Drafts. | groups may also distribute working documents as Internet-Drafts. | |||
skipping to change at page 1, line 34 | skipping to change at page 1, line 34 | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at http:// | The list of current Internet-Drafts can be accessed at http:// | |||
www.ietf.org/ietf/1id-abstracts.txt. | www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on April 19, 2004. | This Internet-Draft will expire on May 17, 2004. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The Internet Society (2003). All Rights Reserved. | Copyright (C) The Internet Society (2003). All Rights Reserved. | |||
Abstract | Abstract | |||
This specification defines redirect reference resources. A redirect | This specification defines redirect reference resources. A redirect | |||
reference resource is a resource whose default response is an HTTP/ | reference resource is a resource whose default response is an HTTP/ | |||
1.1 302 (Found) status code, redirecting the client to a different | 1.1 302 (Found) status code, redirecting the client to a different | |||
skipping to change at page 2, line 13 | skipping to change at page 2, line 13 | |||
Distribution of this document is unlimited. Please send comments to | Distribution of this document is unlimited. Please send comments to | |||
the Distributed Authoring and Versioning (WebDAV) working group at | the Distributed Authoring and Versioning (WebDAV) working group at | |||
w3c-dist-auth@w3.org [1], which may be joined by sending a message | w3c-dist-auth@w3.org [1], which may be joined by sending a message | |||
with subject "subscribe" to w3c-dist-auth-request@w3.org [2]. | with subject "subscribe" to w3c-dist-auth-request@w3.org [2]. | |||
Discussions of the WEBDAV working group are archived at URL: http:// | Discussions of the WEBDAV working group are archived at URL: http:// | |||
lists.w3.org/Archives/Public/w3c-dist-auth/. | lists.w3.org/Archives/Public/w3c-dist-auth/. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Notational Conventions . . . . . . . . . . . . . . . . . . . 7 | 2. Notational Conventions . . . . . . . . . . . . . . . . . . . 6 | |||
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4. Overview of Redirect Reference Resources . . . . . . . . . . 9 | 4. Overview of Redirect Reference Resources . . . . . . . . . . 8 | |||
5. Creating a Redirect Reference Resource . . . . . . . . . . . 10 | 5. Creating a Redirect Reference Resource . . . . . . . . . . . 9 | |||
5.1 MKRESOURCE . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.1 MKRESOURCE . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
5.2 Example: Creating a Redirect Reference Resource with | 5.2 Example: Creating a Redirect Reference Resource with | |||
MKRESOURCE . . . . . . . . . . . . . . . . . . . . . . . . . 11 | MKRESOURCE . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
6. Operations on Redirect Reference Resources . . . . . . . . . 13 | 6. Operations on Redirect Reference Resources . . . . . . . . . 12 | |||
7. Operations on Collections That Contain Redirect Reference | 7. Operations on Collections That Contain Redirect Reference | |||
Resources . . . . . . . . . . . . . . . . . . . . . . . . . 14 | Resources . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
7.1 MOVE and DELETE on Collections That Contain Redirect | 7.1 LOCK on a Collection That Contains Redirect References . . . 13 | |||
References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 7.2 Example: PROPFIND on a Collection with Redirect Reference | |||
7.2 LOCK on a Collection That Contains Redirect References . . . 14 | Resources . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
7.3 Example: PROPFIND on a Collection with Redirect Reference | 7.3 Example: PROPFIND with Apply-To-Redirect-Ref on a | |||
Resources . . . . . . . . . . . . . . . . . . . . . . . . . 15 | ||||
7.4 Example: PROPFIND with Apply-To-Redirect-Ref on a | ||||
Collection with Redirect Reference Resources . . . . . . . . 16 | Collection with Redirect Reference Resources . . . . . . . . 16 | |||
7.5 Example: COPY on a Collection That Contains a Redirect | 7.4 Example: COPY on a Collection That Contains a Redirect | |||
Reference Resource . . . . . . . . . . . . . . . . . . . . . 17 | ||||
7.5 Example: LOCK on a Collection That Contains a Redirect | ||||
Reference Resource . . . . . . . . . . . . . . . . . . . . . 18 | Reference Resource . . . . . . . . . . . . . . . . . . . . . 18 | |||
7.6 Example: LOCK on a Collection That Contains a Redirect | 8. Operations on Targets of Redirect Reference Resources . . . 20 | |||
Reference Resource . . . . . . . . . . . . . . . . . . . . . 19 | 9. Relative URIs in DAV:reftarget . . . . . . . . . . . . . . . 21 | |||
8. Operations on Targets of Redirect Reference Resources . . . 22 | ||||
9. Relative URIs in DAV:reftarget . . . . . . . . . . . . . . . 23 | ||||
9.1 Example: Resolving a Relative URI in a Multi-Status | 9.1 Example: Resolving a Relative URI in a Multi-Status | |||
Response . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | Response . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
10. Redirect References to Collections . . . . . . . . . . . . . 25 | 10. Redirect References to Collections . . . . . . . . . . . . . 23 | |||
11. Headers . . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 11. Headers . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
11.1 Redirect-Ref Response Header . . . . . . . . . . . . . . . . 27 | 11.1 Redirect-Ref Response Header . . . . . . . . . . . . . . . . 25 | |||
11.2 Apply-To-Redirect-Ref Request Header . . . . . . . . . . . . 27 | 11.2 Apply-To-Redirect-Ref Request Header . . . . . . . . . . . . 25 | |||
12. Properties . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 12. Properties . . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
12.1 reftarget Property . . . . . . . . . . . . . . . . . . . . . 28 | 12.1 reftarget Property . . . . . . . . . . . . . . . . . . . . . 26 | |||
12.2 location Pseudo-Property . . . . . . . . . . . . . . . . . . 28 | 13. XML Elements . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
13. XML Elements . . . . . . . . . . . . . . . . . . . . . . . . 29 | 13.1 redirectref XML Element . . . . . . . . . . . . . . . . . . 27 | |||
13.1 redirectref XML Element . . . . . . . . . . . . . . . . . . 29 | ||||
14. Extensions to the DAV:response XML Element for | 14. Extensions to the DAV:response XML Element for | |||
Multi-Status Responses . . . . . . . . . . . . . . . . . . . 30 | Multi-Status Responses . . . . . . . . . . . . . . . . . . . 28 | |||
15. Capability Discovery . . . . . . . . . . . . . . . . . . . . 31 | 15. Capability Discovery . . . . . . . . . . . . . . . . . . . . 29 | |||
15.1 Example: Discovery of Support for Redirect Reference | 15.1 Example: Discovery of Support for Redirect Reference | |||
Resources . . . . . . . . . . . . . . . . . . . . . . . . . 31 | Resources . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
16. Security Considerations . . . . . . . . . . . . . . . . . . 32 | 16. Security Considerations . . . . . . . . . . . . . . . . . . 30 | |||
16.1 Privacy Concerns . . . . . . . . . . . . . . . . . . . . . . 32 | 16.1 Privacy Concerns . . . . . . . . . . . . . . . . . . . . . . 30 | |||
16.2 Redirect Loops . . . . . . . . . . . . . . . . . . . . . . . 32 | 16.2 Redirect Loops . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
16.3 Redirect Reference Resources and Denial of Service . . . . . 32 | 16.3 Redirect Reference Resources and Denial of Service . . . . . 30 | |||
16.4 Revealing Private Locations . . . . . . . . . . . . . . . . 32 | 16.4 Revealing Private Locations . . . . . . . . . . . . . . . . 30 | |||
17. Internationalization Considerations . . . . . . . . . . . . 34 | 17. Internationalization Considerations . . . . . . . . . . . . 32 | |||
18. IANA Considerations . . . . . . . . . . . . . . . . . . . . 35 | 18. IANA Considerations . . . . . . . . . . . . . . . . . . . . 33 | |||
19. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 36 | 19. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
20. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 37 | 20. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 | |||
Normative References . . . . . . . . . . . . . . . . . . . . 38 | Normative References . . . . . . . . . . . . . . . . . . . . 36 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 38 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 36 | |||
A. Changes to the WebDAV Document Type Definition . . . . . . . 40 | A. Changes to the WebDAV Document Type Definition . . . . . . . 38 | |||
B. Change Log (to be removed by RFC Editor before | B. Change Log (to be removed by RFC Editor before | |||
publication) . . . . . . . . . . . . . . . . . . . . . . . . 41 | publication) . . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
B.1 Since draft-ietf-webdav-redirectref-protocol-02 . . . . . . 41 | B.1 Since draft-ietf-webdav-redirectref-protocol-02 . . . . . . 39 | |||
B.2 Since draft-ietf-webdav-redirectref-protocol-03 . . . . . . 41 | B.2 Since draft-ietf-webdav-redirectref-protocol-03 . . . . . . 39 | |||
B.3 Since draft-ietf-webdav-redirectref-protocol-04 . . . . . . 41 | B.3 Since draft-ietf-webdav-redirectref-protocol-04 . . . . . . 39 | |||
B.4 Since draft-ietf-webdav-redirectref-protocol-05 . . . . . . 41 | B.4 Since draft-ietf-webdav-redirectref-protocol-05 . . . . . . 39 | |||
B.5 Since draft-ietf-webdav-redirectref-protocol-06 . . . . . . 39 | ||||
C. Resolved issues (to be removed by RFC Editor before | C. Resolved issues (to be removed by RFC Editor before | |||
publication) . . . . . . . . . . . . . . . . . . . . . . . . 42 | publication) . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
C.1 lc-60-ex . . . . . . . . . . . . . . . . . . . . . . . . . . 42 | C.1 lc-19-direct-ref . . . . . . . . . . . . . . . . . . . . . . 40 | |||
C.2 lc-06-reftarget-relative . . . . . . . . . . . . . . . . . . 42 | C.2 rfc2606-compliance . . . . . . . . . . . . . . . . . . . . . 40 | |||
C.3 lc-71-relative . . . . . . . . . . . . . . . . . . . . . . . 42 | C.3 lc-28-lang . . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
C.4 9-MKRESOURCE-vs-relative-URI . . . . . . . . . . . . . . . . 43 | C.4 lc-29-lang . . . . . . . . . . . . . . . . . . . . . . . . . 40 | |||
C.5 lc-72-trailingslash . . . . . . . . . . . . . . . . . . . . 43 | C.5 lc-44-pseudo . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
C.6 lc-50-blindredirect . . . . . . . . . . . . . . . . . . . . 43 | C.6 lc-61-pseudo . . . . . . . . . . . . . . . . . . . . . . . . 41 | |||
C.7 lc-74-terminology . . . . . . . . . . . . . . . . . . . . . 44 | C.7 lc-62-oldclient . . . . . . . . . . . . . . . . . . . . . . 41 | |||
C.8 11.2-apply-to-redirect-ref-syntax . . . . . . . . . . . . . 44 | C.8 lc-63-move . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
C.9 15.1-options-response . . . . . . . . . . . . . . . . . . . 44 | C.9 lc-53-s10 . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
C.10 lc-79-accesscontrol . . . . . . . . . . . . . . . . . . . . 44 | C.10 lc-76-location . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
C.11 lc-80-i18n . . . . . . . . . . . . . . . . . . . . . . . . . 43 | ||||
D. Open issues (to be removed by RFC Editor before | D. Open issues (to be removed by RFC Editor before | |||
publication) . . . . . . . . . . . . . . . . . . . . . . . . 46 | publication) . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
D.1 lc-85-301 . . . . . . . . . . . . . . . . . . . . . . . . . 46 | D.1 old_clients . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
D.2 lc-38-not-hierarchical . . . . . . . . . . . . . . . . . . . 46 | D.2 lc-85-301 . . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
D.3 lc-36-server . . . . . . . . . . . . . . . . . . . . . . . . 46 | D.3 lc-38-not-hierarchical . . . . . . . . . . . . . . . . . . . 45 | |||
D.4 lc-33-forwarding . . . . . . . . . . . . . . . . . . . . . . 47 | D.4 lc-36-server . . . . . . . . . . . . . . . . . . . . . . . . 45 | |||
D.5 lc-37-integrity . . . . . . . . . . . . . . . . . . . . . . 47 | D.5 lc-33-forwarding . . . . . . . . . . . . . . . . . . . . . . 45 | |||
D.6 3-terminology-redirectref . . . . . . . . . . . . . . . . . 47 | D.6 lc-37-integrity . . . . . . . . . . . . . . . . . . . . . . 46 | |||
D.7 lc-19-direct-ref . . . . . . . . . . . . . . . . . . . . . . 47 | D.7 3-terminology-redirectref . . . . . . . . . . . . . . . . . 46 | |||
D.8 lc-41-no-webdav . . . . . . . . . . . . . . . . . . . . . . 48 | D.8 lc-41-no-webdav . . . . . . . . . . . . . . . . . . . . . . 46 | |||
D.9 lc-58-update . . . . . . . . . . . . . . . . . . . . . . . . 48 | D.9 lc-58-update . . . . . . . . . . . . . . . . . . . . . . . . 46 | |||
D.10 lc-24-properties . . . . . . . . . . . . . . . . . . . . . . 48 | D.10 lc-24-properties . . . . . . . . . . . . . . . . . . . . . . 47 | |||
D.11 rfc2606-compliance . . . . . . . . . . . . . . . . . . . . . 49 | D.11 lc-48-s6 . . . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
D.12 lc-48-s6 . . . . . . . . . . . . . . . . . . . . . . . . . . 49 | D.12 lc-57-noautoupdate . . . . . . . . . . . . . . . . . . . . . 47 | |||
D.13 lc-28-lang . . . . . . . . . . . . . . . . . . . . . . . . . 49 | D.13 12.1-property-name . . . . . . . . . . . . . . . . . . . . . 48 | |||
D.14 lc-29-lang . . . . . . . . . . . . . . . . . . . . . . . . . 49 | D.14 lc-55-iana . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
D.15 lc-44-pseudo . . . . . . . . . . . . . . . . . . . . . . . . 50 | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
D.16 lc-61-pseudo . . . . . . . . . . . . . . . . . . . . . . . . 50 | Intellectual Property and Copyright Statements . . . . . . . 50 | |||
D.17 lc-62-oldclient . . . . . . . . . . . . . . . . . . . . . . 50 | ||||
D.18 lc-63-move . . . . . . . . . . . . . . . . . . . . . . . . . 51 | ||||
D.19 lc-57-noautoupdate . . . . . . . . . . . . . . . . . . . . . 51 | ||||
D.20 lc-53-s10 . . . . . . . . . . . . . . . . . . . . . . . . . 51 | ||||
D.21 12.1-property-name . . . . . . . . . . . . . . . . . . . . . 52 | ||||
D.22 lc-76-location . . . . . . . . . . . . . . . . . . . . . . . 52 | ||||
D.23 lc-80-i18n . . . . . . . . . . . . . . . . . . . . . . . . . 52 | ||||
D.24 lc-55-iana . . . . . . . . . . . . . . . . . . . . . . . . . 52 | ||||
Intellectual Property and Copyright Statements . . . . . . . 53 | ||||
1. Introduction | 1. Introduction | |||
This is one of a pair of specifications that extend the WebDAV | This is one of a pair of specifications that extend the WebDAV | |||
Distributed Authoring Protocol to enable clients to create new access | Distributed Authoring Protocol to enable clients to create new access | |||
paths to existing resources. This capability is useful for several | paths to existing resources. This capability is useful for several | |||
reasons: | reasons: | |||
URIs of WebDAV-compliant resources are hierarchical and correspond to | URIs of WebDAV-compliant resources are hierarchical and correspond to | |||
a hierarchy of collections in resource space. The WebDAV Distributed | a hierarchy of collections in resource space. The WebDAV Distributed | |||
skipping to change at page 9, line 35 | skipping to change at page 8, line 35 | |||
A redirect reference resource is a new type of resource. To | A redirect reference resource is a new type of resource. To | |||
distinguish redirect reference resources from non-reference | distinguish redirect reference resources from non-reference | |||
resources, a new value of the DAV:resourcetype property (defined in | resources, a new value of the DAV:resourcetype property (defined in | |||
[RFC2518]), DAV:redirectref, is defined in Section 13.1 below. | [RFC2518]), DAV:redirectref, is defined in Section 13.1 below. | |||
Since a redirect reference resource is a resource, methods can be | Since a redirect reference resource is a resource, methods can be | |||
applied to the reference resource as well as to its target resource. | applied to the reference resource as well as to its target resource. | |||
The Apply-To-Redirect-Ref request header (defined in Section 11.2 | The Apply-To-Redirect-Ref request header (defined in Section 11.2 | |||
below) is provided so that referencing-aware clients can control | below) is provided so that referencing-aware clients can control | |||
whether an operation is applied to the redirect reference resource or | whether an operation is applied to the redirect reference resource or | |||
to its target resource. The Apply-To-Redirect-Ref header can be used | standard HTTP/WebDAV behaviour (redirection with a 3xx status code) | |||
with most requests to redirect reference resources. This header is | should occur. The Apply-To-Redirect-Ref header can be used with most | |||
requests to redirect reference resources. This header is | ||||
particularly useful with PROPFIND, to retrieve the reference | particularly useful with PROPFIND, to retrieve the reference | |||
resource's own properties. | resource's own properties. | |||
5. Creating a Redirect Reference Resource | 5. Creating a Redirect Reference Resource | |||
The new MKRESOURCE method is used to create new redirect reference | The new MKRESOURCE method is used to create new redirect reference | |||
resources. In order to create a redirect reference resource using | resources. In order to create a redirect reference resource using | |||
MKRESOURCE, the values of two properties must be set in the body of | MKRESOURCE, the values of two properties must be set in the body of | |||
the MKRESOURCE request. The value of DAV:resourcetype MUST be set to | the MKRESOURCE request. The value of DAV:resourcetype MUST be set to | |||
DAV:redirectref, a new value of DAV:resourcetype defined in Section | DAV:redirectref, a new value of DAV:resourcetype defined in Section | |||
skipping to change at page 11, line 29 | skipping to change at page 10, line 29 | |||
not passed with the request. | not passed with the request. | |||
507 (Insufficient Storage): The server does not have sufficient | 507 (Insufficient Storage): The server does not have sufficient | |||
space to record the state of the resource. | space to record the state of the resource. | |||
5.2 Example: Creating a Redirect Reference Resource with MKRESOURCE | 5.2 Example: Creating a Redirect Reference Resource with MKRESOURCE | |||
>> Request: | >> Request: | |||
MKRESOURCE /~whitehead/dav/spec08.ref HTTP/1.1 | MKRESOURCE /~whitehead/dav/spec08.ref HTTP/1.1 | |||
Host: www.ics.uci.edu | Host: www.example.com | |||
Content-Type: text/xml; charset="utf-8" | Content-Type: text/xml; charset="utf-8" | |||
Content-Length: xxx | Content-Length: xxx | |||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | |||
<D:propertyupdate xmlns:D="DAV:"> | <D:propertyupdate xmlns:D="DAV:"> | |||
<D:set> | <D:set> | |||
<D:prop> | <D:prop> | |||
<D:resourcetype><D:redirectref/></D:resourcetype> | <D:resourcetype><D:redirectref/></D:resourcetype> | |||
<D:reftarget> | <D:reftarget> | |||
<D:href>/i-d/draft-webdav-protocol-08.txt</D:href> | <D:href>/i-d/draft-webdav-protocol-08.txt</D:href> | |||
</D:reftarget> | </D:reftarget> | |||
</D:prop> | </D:prop> | |||
</D:set> | </D:set> | |||
</D:propertyupdate> | </D:propertyupdate> | |||
>> Response: | >> Response: | |||
HTTP/1.1 201 Created | HTTP/1.1 201 Created | |||
This request resulted in the creation of a new redirect reference | This request resulted in the creation of a new redirect reference | |||
resource at www.ics.uci.edu/~whitehead/dav/spec08.ref, which points | resource at http://www.example.com/~whitehead/dav/spec08.ref, which | |||
to the resource identified by the DAV:reftarget property. In this | points to the resource identified by the DAV:reftarget property. In | |||
example, the target resource is identified by the URI http:// | this example, the target resource is identified by the URI http:// | |||
www.ics.uci.edu/i-d/draft-webdav-protocol-08.txt. The redirect | www.example.com/i-d/draft-webdav-protocol-08.txt. The redirect | |||
reference resource's DAV:resourcetype property is set to | reference resource's DAV:resourcetype property is set to | |||
DAV:redirectref. | DAV:redirectref. | |||
6. Operations on Redirect Reference Resources | 6. Operations on Redirect Reference Resources | |||
Although non-referencing-aware clients cannot create reference | Although non-referencing-aware clients cannot create reference | |||
resources, they should be able to submit requests through the | resources, they should be able to submit requests through the | |||
reference resources created by reference-aware WebDAV clients. They | reference resources created by reference-aware WebDAV clients. They | |||
should be able to follow any references to their targets. To make | should be able to follow any references to their targets. To make | |||
this possible, a server that receives any request made via a redirect | this possible, a server that receives any request made via a redirect | |||
skipping to change at page 13, line 25 | skipping to change at page 12, line 25 | |||
but with these additional rules: | but with these additional rules: | |||
o The Location response header MUST contain an absolute URI that | o The Location response header MUST contain an absolute URI that | |||
identifies the target of the reference resource. | identifies the target of the reference resource. | |||
o The response MUST include the Redirect-Ref header. This header | o The response MUST include the Redirect-Ref header. This header | |||
allows reference-aware WebDAV clients to recognize the resource as | allows reference-aware WebDAV clients to recognize the resource as | |||
a reference resource and understand the reason for the | a reference resource and understand the reason for the | |||
redirection. | redirection. | |||
A reference-aware WebDAV client can act on this response in one of | A reference-aware WebDAV client can, like a non-referencing client, | |||
two ways. It can, like a non-referencing client, resubmit the | resubmit the request to the URI in the Location header in order to | |||
request to the URI in the Location header in order to operate on the | operate on the target resource. Alternatively, it can resubmit the | |||
target resource. Alternatively, it can resubmit the request to the | request to the URI of the redirect reference resource with the | |||
URI of the redirect reference resource with the | ||||
"Apply-To-Redirect-Ref: T" header in order to operate on the | "Apply-To-Redirect-Ref: T" header in order to operate on the | |||
reference resource itself. In this case, the request MUST be applied | reference resource itself. In this case, the request MUST be applied | |||
to the reference resource itself, and a 302 response MUST NOT be | to the reference resource itself, and a 302 response MUST NOT be | |||
returned. | returned. | |||
A reference-aware client may know before submitting its request that | ||||
the Request-URI identifies a redirect reference resource. In this | ||||
case, if the client wants to apply the method to the reference | ||||
resource, it can save the round trip caused by the 302 response by | ||||
using an Apply-To-Redirect-Ref header in its initial request to the | ||||
URI. | ||||
As redirect references do not have bodies, GET and PUT requests with | As redirect references do not have bodies, GET and PUT requests with | |||
"Apply-To-Redirect-Ref: T" MUST fail with status 403 (forbidden). | "Apply-To-Redirect-Ref: T" MUST fail with status 403 (forbidden). | |||
7. Operations on Collections That Contain Redirect Reference Resources | 7. Operations on Collections That Contain Redirect Reference Resources | |||
Consistent with the rules in Section 6, the response for each | Consistent with the rules in Section 6, the response for each | |||
redirect reference encountered while processing a collection MUST be | redirect reference encountered while processing a collection MUST be | |||
a 302 (Found) unless a "Apply-To-Redirect-Ref: T" header is included | a 302 (Found) unless a "Apply-To-Redirect-Ref: T" header is included | |||
with the request. The overall response will therefore be a 207 | with the request. The overall response will therefore be a 207 | |||
(Multi-Status). Since a Location header and Redirect-Ref header | (Multi-Status). For each DAV:response element representing a redirect | |||
cannot be returned for each redirect reference encountered, the same | reference, the server MUST include an additional DAV:location | |||
information is provided using properties in the response elements for | element, specifying the value of the "Location" header that would be | |||
those resources. The DAV:location pseudo-property and the | returned otherwise. The extension is defined in Section 14 below. | |||
DAV:resourcetype property MUST be included with the 302 status code. | ||||
This necessitates an extension to the syntax of the DAV:response | ||||
element that was defined in [RFC2518]. The extension is defined in | ||||
Section 14 below. | ||||
It is recommended that future editors of [RFC2518] define the | ||||
DAV:location pseudo-property in [RFC2518], so that non-referencing | ||||
clients will also be able to use the response to operate on the | ||||
target resource. (This will also enable clients to operate on | ||||
traditional HTTP/1.1 302 responses in Multi-Status responses.) Until | ||||
then, non-referencing clients will not be able to process 302 | ||||
responses from redirect reference resources encountered while | ||||
processing a collection. | ||||
The Apply-To-Redirect-Ref header (defined in Section 11.2) MAY be | The Apply-To-Redirect-Ref header (defined in Section 11.2) MAY be | |||
used with any request on a collection. If present, it will be | used with any request on a collection. If present, it will be | |||
applied to all redirect reference resources encountered while | applied to all redirect reference resources encountered while | |||
processing the collection. | processing the collection. | |||
7.1 MOVE and DELETE on Collections That Contain Redirect References | 7.1 LOCK on a Collection That Contains Redirect References | |||
DELETE removes the binding that corresponds to the Request-URI. MOVE | ||||
removes that binding and creates a new binding to the same resource. | ||||
In cases where DELETE and MOVE are applied to a collection, these | ||||
operations affect all the descendents of the collection, but they do | ||||
so indirectly. There is no need to visit each descendent in order to | ||||
process the request. Consequently, even if there are redirect | ||||
reference resources in a tree that is being deleted or moved, there | ||||
will be no 302 responses from the redirect reference resources. | ||||
7.2 LOCK on a Collection That Contains Redirect References | ||||
LOCK poses special problems because it is atomic. An attempt to lock | An attempt to lock (with Depth: infinity) a collection that contains | |||
(with Depth: infinity) a collection that contains redirect references | redirect references without specifying "Apply-To-Redirect-Ref: T" | |||
will always fail. The Multi-Status response will contain a 302 | will always fail. The Multi-Status response will contain a 302 | |||
response for each redirect reference. | response for each redirect reference. | |||
Reference-aware clients can lock the collection by using | Reference-aware clients can lock the collection by using | |||
Apply-To-Redirect-Ref, and, if desired, lock the targets of the | Apply-To-Redirect-Ref, and, if desired, lock the targets of the | |||
redirect references individually. | redirect references individually. | |||
Non-referencing clients must resort to locking each resource | Non-referencing clients must resort to locking each resource | |||
individually. | individually. | |||
7.3 Example: PROPFIND on a Collection with Redirect Reference Resources | 7.2 Example: PROPFIND on a Collection with Redirect Reference Resources | |||
Suppose a PROPFIND request with Depth: infinity is submitted to the | Suppose a PROPFIND request with Depth: infinity is submitted to the | |||
following collection, with the members shown here: | following collection, with the members shown here: | |||
http://www.svr.com/MyCollection/ | /MyCollection/ | |||
(non-reference resource) diary.html | (non-reference resource) diary.html | |||
(redirect reference resource) nunavut | (redirect reference resource) nunavut | |||
>> Request: | >> Request: | |||
PROPFIND /MyCollection/ HTTP/1.1 | PROPFIND /MyCollection/ HTTP/1.1 | |||
Host: www.svr.com | Host: example.com | |||
Depth: infinity | Depth: infinity | |||
Apply-To-Redirect-Ref: F | ||||
Content-Type: text/xml | Content-Type: text/xml | |||
Content-Length: xxxx | Content-Length: xxxx | |||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
<D:propfind xmlns:D="DAV: "> | <D:propfind xmlns:D="DAV: "> | |||
<D:prop xmlns:J="http://www.svr.com/jsprops/"> | <D:prop xmlns:J="http://example.com/jsprops/"> | |||
<D:resourcetype/> | <D:resourcetype/> | |||
<J:keywords/> | <J:keywords/> | |||
</D:prop> | </D:prop> | |||
</D:propfind> | </D:propfind> | |||
>> Response: | >> Response: | |||
HTTP/1.1 207 Multi-Status | HTTP/1.1 207 Multi-Status | |||
Content-Type: text/xml | Content-Type: text/xml | |||
Content-Length: xxxx | Content-Length: xxxx | |||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
<D:multistatus xmlns:D="DAV:" xmlns:J="http://www.svr.com/jsprops/"> | <D:multistatus xmlns:D="DAV:" xmlns:J="http://example.com/jsprops/"> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/</D:href> | <D:href>/MyCollection/</D:href> | |||
<D:propstat> | <D:propstat> | |||
<D:prop> | <D:prop> | |||
<D:resourcetype><D:collection/></D:resourcetype> | <D:resourcetype><D:collection/></D:resourcetype> | |||
<J:keywords>diary, interests, hobbies</J:keywords> | <J:keywords>diary, interests, hobbies</J:keywords> | |||
</D:prop> | </D:prop> | |||
<D:status>HTTP/1.1 200 OK</D:status> | <D:status>HTTP/1.1 200 OK</D:status> | |||
</D:propstat> | </D:propstat> | |||
</D:response> | </D:response> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/diary.html</D:href> | <D:href>/MyCollection/diary.html</D:href> | |||
<D:propstat> | <D:propstat> | |||
<D:prop> | <D:prop> | |||
<D:resourcetype/> | <D:resourcetype/> | |||
<J:keywords>diary, travel, family, history</J:keywords> | <J:keywords>diary, travel, family, history</J:keywords> | |||
</D:prop> | </D:prop> | |||
<D:status>HTTP/1.1 200 OK</D:status> | <D:status>HTTP/1.1 200 OK</D:status> | |||
</D:propstat> | </D:propstat> | |||
</D:response> | </D:response> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/nunavut</D:href> | <D:href>/MyCollection/nunavut</D:href> | |||
<D:status>HTTP/1.1 302 Found</D:status> | <D:status>HTTP/1.1 302 Found</D:status> | |||
<D:prop> | ||||
<D:location> | <D:location> | |||
<D:href>http://www.inac.gc.ca/art/inuit/</D:href> | <D:href>http://example.ca/art/inuit/</D:href> | |||
</D:location> | </D:location> | |||
<D:resourcetype><D:redirectref/></D:resourcetype> | ||||
</D:prop> | ||||
</D:response> | </D:response> | |||
</D:multistatus> | </D:multistatus> | |||
In this example the Depth header is set to infinity, and the | In this example the Depth header is set to infinity, and the | |||
Apply-To-Redirect-Ref header is not used. The collection contains | Apply-To-Redirect-Ref header is set to "F". The collection contains | |||
one URI that identifies a redirect reference resource. The response | one URI that identifies a redirect reference resource. The response | |||
element for the redirect reference resource has a status of 302 | element for the redirect reference resource has a status of 302 | |||
(Found), and includes a DAV:prop element with the DAV:location | (Found), and includes a DAV:location extension element to allow | |||
pseudo-property and the DAV:resourcetype property to allow clients to | clients to retrieve the properties of its target resource. (The | |||
retrieve the properties of its target resource. (The response | response element for the redirect reference resource does not include | |||
element for the redirect reference resource does not include the | the requested properties. The client can submit another PROPFIND | |||
requested properties. The client can submit another PROPFIND request | request to the URI in the DAV:location pseudo-property to retrieve | |||
to the URI in the DAV:location pseudo-property to retrieve those | those properties.) | |||
properties.) | ||||
7.4 Example: PROPFIND with Apply-To-Redirect-Ref on a Collection with | 7.3 Example: PROPFIND with Apply-To-Redirect-Ref on a Collection with | |||
Redirect Reference Resources | Redirect Reference Resources | |||
Suppose a PROPFIND request with "Apply-To-Redirect-Ref: T" and Depth: | Suppose a PROPFIND request with "Apply-To-Redirect-Ref: T" and Depth: | |||
infinity is submitted to the following collection, with the members | infinity is submitted to the following collection, with the members | |||
shown here: | shown here: | |||
/MyCollection/ | /MyCollection/ | |||
(non-reference resource) diary.html | (non-reference resource) diary.html | |||
(redirect reference resource) nunavut | (redirect reference resource) nunavut | |||
>> Request: | >> Request: | |||
PROPFIND /MyCollection/ HTTP/1.1 | PROPFIND /MyCollection/ HTTP/1.1 | |||
Host: example.com | Host: example.com | |||
Depth: infinity | Depth: infinity | |||
Apply-To-Redirect-Ref: T | Apply-To-Redirect-Ref: T | |||
Content-Type: text/xml | Content-Type: text/xml | |||
Content-Length: xxxx | Content-Length: xxxx | |||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
skipping to change at page 18, line 13 | skipping to change at page 17, line 24 | |||
<D:prop><D:reftarget/></D:prop> | <D:prop><D:reftarget/></D:prop> | |||
<D:status>HTTP/1.1 404 Not Found</D:status> | <D:status>HTTP/1.1 404 Not Found</D:status> | |||
</D:propstat> | </D:propstat> | |||
</D:response> | </D:response> | |||
<D:response> | <D:response> | |||
<D:href>/MyCollection/nunavut</D:href> | <D:href>/MyCollection/nunavut</D:href> | |||
<D:propstat> | <D:propstat> | |||
<D:prop> | <D:prop> | |||
<D:resourcetype><D:redirectref/></D:resourcetype> | <D:resourcetype><D:redirectref/></D:resourcetype> | |||
<D:reftarget> | <D:reftarget> | |||
<D:href>http://www.inac.gc.ca/art/inuit/</D:href> | <D:href>http://example.ca/art/inuit/</D:href> | |||
</D:reftarget> | </D:reftarget> | |||
</D:prop> | </D:prop> | |||
<D:status>HTTP/1.1 200 OK</D:status> | <D:status>HTTP/1.1 200 OK</D:status> | |||
</D:propstat> | </D:propstat> | |||
</D:response> | </D:response> | |||
</D:multistatus> | </D:multistatus> | |||
Since the "Apply-To-Redirect-Ref: T" header is present, the response | Since the "Apply-To-Redirect-Ref: T" header is present, the response | |||
shows the properties of the redirect reference resource in the | shows the properties of the redirect reference resource in the | |||
collection rather than reporting a 302 status. | collection rather than reporting a 302 status. | |||
7.5 Example: COPY on a Collection That Contains a Redirect Reference | 7.4 Example: COPY on a Collection That Contains a Redirect Reference | |||
Resource | Resource | |||
Suppose a COPY request is submitted to the following collection, with | Suppose a COPY request is submitted to the following collection, with | |||
the members shown: | the members shown: | |||
/MyCollection/ | /MyCollection/ | |||
(non-reference resource) diary.html | (non-reference resource) diary.html | |||
(redirect reference resource) nunavut with target | (redirect reference resource) nunavut with target | |||
/Someplace/nunavut.map | /Someplace/nunavut.map | |||
>> Request: | >> Request: | |||
COPY /MyCollection/ HTTP/1.1 | COPY /MyCollection/ HTTP/1.1 | |||
Host: www.svr.com | Host: example.com | |||
Depth: infinity | Depth: infinity | |||
Destination: http://www.svr.com/OtherCollection/ | Destination: http://example.com/OtherCollection/ | |||
>> Response: | >> Response: | |||
HTTP/1.1 207 Multi-Status | HTTP/1.1 207 Multi-Status | |||
Content-Type: text/xml; charset="utf-8" | Content-Type: text/xml; charset="utf-8" | |||
Content-Length: xxx | Content-Length: xxx | |||
<?xml version="1.0" encoding="utf-8" ?> | <?xml version="1.0" encoding="utf-8" ?> | |||
<D:multistatus xmlns:D="DAV:"> | <D:multistatus xmlns:D="DAV:"> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/nunavut</D:href> | <D:href>/MyCollection/nunavut</D:href> | |||
<D:status>HTTP/1.1 302 Found</D:status> | <D:status>HTTP/1.1 302 Found</D:status> | |||
<D:prop> | ||||
<D:location> | <D:location> | |||
<D:href>http://www.svr.com//Someplace/nunavut.map</D:href> | <D:href>http://example.com//Someplace/nunavut.map</D:href> | |||
</D:location> | </D:location> | |||
<D:resourcetype><D:redirectref/></D:resourcetype> | ||||
</D:prop> | ||||
</D:response> | </D:response> | |||
</D:multistatus> | </D:multistatus> | |||
In this case, since /MyCollection/nunavut is a redirect reference | In this case, since /MyCollection/nunavut is a redirect reference | |||
resource, the COPY operation was only a partial success. The | resource, the COPY operation was only a partial success. The | |||
redirect reference resource was not copied, but a 302 response was | redirect reference resource was not copied, but a 302 response was | |||
returned for it. So the resulting collection is as follows: | returned for it. So the resulting collection is as follows: | |||
/OtherCollection/ | /OtherCollection/ | |||
(non-reference resource) diary.html | (non-reference resource) diary.html | |||
7.6 Example: LOCK on a Collection That Contains a Redirect Reference | 7.5 Example: LOCK on a Collection That Contains a Redirect Reference | |||
Resource | Resource | |||
Suppose a LOCK request is submitted to the following collection, with | Suppose a LOCK request is submitted to the following collection, with | |||
the members shown: | the members shown: | |||
/MyCollection/ | /MyCollection/ | |||
(non-reference resource) diary.html | (non-reference resource) diary.html | |||
(redirect reference resource) nunavut | (redirect reference resource) nunavut | |||
>> Request: | >> Request: | |||
LOCK /MyCollection/ HTTP/1.1 | LOCK /MyCollection/ HTTP/1.1 | |||
Host: www.svr.com | Host: example.com | |||
Apply-To-Redirect-Ref: F | ||||
Content-Type: text/xml | Content-Type: text/xml | |||
Content-Length: nnnn | ||||
Authorizaton: Digest username="jas", | ||||
realm=jas@webdav.sb.aol.com, nonce=". . . ", | ||||
uri="/MyCollection/tuva", | ||||
response=". . . ", opaque=". . . " | ||||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
<D:lockinfo xmlns:D="DAV:"> | <D:lockinfo xmlns:D="DAV:"> | |||
<D:lockscope><D:exclusive/></D:lockscope> | <D:lockscope><D:exclusive/></D:lockscope> | |||
<D:locktype><D:write/></D:locktype> | <D:locktype><D:write/></D:locktype> | |||
<D:owner> | ||||
<D:href>http://www.svr.com/~jas/contact.html</D:href> | ||||
</D:owner> | ||||
</D:lockinfo> | </D:lockinfo> | |||
>> Response: | >> Response: | |||
HTTP/1.1 207 Multi-Status | HTTP/1.1 207 Multi-Status | |||
Content-Type: text/xml | Content-Type: text/xml | |||
Content-Length: nnnn | Content-Length: nnnn | |||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
<D:multistatus xmlns:D="Dav:"> | <D:multistatus xmlns:D="Dav:"> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/</D:href> | <D:href>/MyCollection/</D:href> | |||
<D:propstat> | ||||
<D:prop><D:lockdiscovery/></D:prop> | ||||
<D:status>HTTP/1.1 424 Failed Dependency</D:status> | <D:status>HTTP/1.1 424 Failed Dependency</D:status> | |||
</D:propstat> | ||||
</D:response> | </D:response> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/diary.html</D:href> | <D:href>/MyCollection/diary.html</D:href> | |||
<D:status>HTTP/1.1 424 Failed Dependency</D:status> | <D:status>HTTP/1.1 424 Failed Dependency</D:status> | |||
</D:response> | </D:response> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/nunavut</D:href> | <D:href>/MyCollection/nunavut</D:href> | |||
<D:status>HTTP/1.1 302 Found</D:status> | <D:status>HTTP/1.1 302 Found</D:status> | |||
<D:prop> | ||||
<D:location> | <D:location> | |||
<D:href>http://www.inac.gc.ca/art/inuit/</D:href> | <D:href>http://example.ca/art/inuit/</D:href> | |||
</D:location> | </D:location> | |||
<D:resourcetype><D:redirectref/></D:resourcetype> | ||||
</D:prop> | ||||
</D:response> | </D:response> | |||
</D:multistatus> | </D:multistatus> | |||
The server returns a 302 response code for the redirect reference | The server returns a 302 response code for the redirect reference | |||
resource in the collection. Consequently, neither the collection nor | resource in the collection. Consequently, neither the collection nor | |||
any of the resources identified by its internal member URIs were | any of the resources identified by its internal member URIs were | |||
locked. A referencing-aware client can submit a separate LOCK request | locked. A referencing-aware client can submit a separate LOCK request | |||
to the URI in the DAV:location pseudo-property returned for the | to the URI in the DAV:location element returned for the redirect | |||
redirect reference resource, and can resubmit the LOCK request with | reference resource, and can resubmit the LOCK request with the | |||
the Apply-To-Redirect-Ref header to the collection. At that point | Apply-To-Redirect-Ref header to the collection. At that point both | |||
both the reference resource and its target resource will be locked | the reference resource and its target resource will be locked (as | |||
(as well as the collection and all the resources identified by its | well as the collection and all the resources identified by its other | |||
other members). | members). | |||
8. Operations on Targets of Redirect Reference Resources | 8. Operations on Targets of Redirect Reference Resources | |||
Operations on targets of redirect reference resources have no effect | Operations on targets of redirect reference resources have no effect | |||
on the reference resource. | on the reference resource. | |||
9. Relative URIs in DAV:reftarget | 9. Relative URIs in DAV:reftarget | |||
The URI in the href in a DAV:reftarget property MAY be a relative | The URI in the href in a DAV:reftarget property MAY be a relative | |||
URI. In this case, the base URI to be used for resolving the relative | URI. In this case, the base URI to be used for resolving the relative | |||
skipping to change at page 25, line 11 | skipping to change at page 23, line 11 | |||
the base URI for resolving the relative URI in reftarget. The | the base URI for resolving the relative URI in reftarget. The | |||
absolute URI of reftarget is http://example.com/geog/statistics/ | absolute URI of reftarget is http://example.com/geog/statistics/ | |||
population/1997.html. | population/1997.html. | |||
10. Redirect References to Collections | 10. Redirect References to Collections | |||
In a Request-URI /segment1/segment2/segment3, any of the three | In a Request-URI /segment1/segment2/segment3, any of the three | |||
segments may identify a redirect reference resource. (See [RFC2396], | segments may identify a redirect reference resource. (See [RFC2396], | |||
Section 3.3, for definitions of "path" and "segment".) If any | Section 3.3, for definitions of "path" and "segment".) If any | |||
segment in a Request- URI identifies a redirect reference resource, | segment in a Request- URI identifies a redirect reference resource, | |||
the response is a 302. The value of the Location header in the 302 | the response SHOULD be a 302. The value of the Location header in the | |||
response is as follows: | 302 response is as follows: | |||
The leftmost path segment of the request-URI that identifies a | The leftmost path segment of the request-URI that identifies a | |||
redirect reference resource, together with all path segments and | redirect reference resource, together with all path segments and | |||
separators to the left of it, is replaced by the value of the | separators to the left of it, is replaced by the value of the | |||
redirect reference resource's DAV:reftarget property (resolved to an | redirect reference resource's DAV:reftarget property (resolved to an | |||
absolute URI). The remainder of the request-URI is concatenated to | absolute URI). The remainder of the request-URI is concatenated to | |||
this path. | this path. | |||
Note: If the DAV:reftarget property ends with a "/" and the remainder | Note: If the DAV:reftarget property ends with a "/" and the remainder | |||
of the Request-URI is non-empty (and therefore must begin with a "/ | of the Request-URI is non-empty (and therefore must begin with a "/ | |||
skipping to change at page 27, line 5 | skipping to change at page 24, line 9 | |||
In this case the client must follow up three separate 302 responses | In this case the client must follow up three separate 302 responses | |||
before finally reaching the target resource. The server responds to | before finally reaching the target resource. The server responds to | |||
the initial request with a 302 with Location: /a/y/z.html, and the | the initial request with a 302 with Location: /a/y/z.html, and the | |||
client resubmits the request to /a/y/z.html. The server responds to | client resubmits the request to /a/y/z.html. The server responds to | |||
this request with a 302 with Location: /b/z.html, and the client | this request with a 302 with Location: /b/z.html, and the client | |||
resubmits the request to /b/z.html. The server responds to this | resubmits the request to /b/z.html. The server responds to this | |||
request with a 302 with Location: /c/d.html, and the client resubmits | request with a 302 with Location: /c/d.html, and the client resubmits | |||
the request to /c/d.html. This final request succeeds. | the request to /c/d.html. This final request succeeds. | |||
Note: the behavior described above may have a very serious impact | ||||
on the efficiency of mapping Request-URIs to resources in HTTP | ||||
request processing. Therefore servers MAY respond with a 404 | ||||
status code if the cost of checking all leading path segments for | ||||
redirect references seems prohibitive. | ||||
11. Headers | 11. Headers | |||
11.1 Redirect-Ref Response Header | 11.1 Redirect-Ref Response Header | |||
Redirect-Ref = "Redirect-Ref:" (absoluteURI | relativeURI) | Redirect-Ref = "Redirect-Ref:" (absoluteURI | relativeURI) | |||
; see sections 3 and 5 of [RFC2396] | ; see sections 3 and 5 of [RFC2396] | |||
The Redirect-Ref header is used in all 302 responses from redirect | The Redirect-Ref header is used in all 302 responses from redirect | |||
reference resources. The value is the (possibly relative) URI of the | reference resources. The value is the (possibly relative) URI of the | |||
link target as specified during redirect reference resource creation. | link target as specified during redirect reference resource creation. | |||
skipping to change at page 28, line 25 | skipping to change at page 27, line 5 | |||
resource. This is a read-only property after its initial | resource. This is a read-only property after its initial | |||
creation. Its value can only be set in a MKRESOURCE request. | creation. Its value can only be set in a MKRESOURCE request. | |||
Value: href containing the URI of the target resource. This value | Value: href containing the URI of the target resource. This value | |||
MAY be a relative URI. The reftarget property can occur in the | MAY be a relative URI. The reftarget property can occur in the | |||
entity bodies of MKRESOURCE requests and of responses to PROPFIND | entity bodies of MKRESOURCE requests and of responses to PROPFIND | |||
requests. | requests. | |||
<!ELEMENT reftarget href > | <!ELEMENT reftarget href > | |||
12.2 location Pseudo-Property | ||||
Name: location | ||||
Namespace: DAV: | ||||
Purpose: For use with 302 (Found) response codes in Multi-Status | ||||
responses. It contains the absolute URI of the temporary location | ||||
of the resource. In the context of redirect reference resources, | ||||
this value is the absolute URI of the target resource. It is | ||||
analogous to the Location header in HTTP 302 responses defined in | ||||
[RFC2616] Section 10.3.3 "302 Found." Including the location | ||||
pseudo-property in a Multi-Status response requires an extension | ||||
to the syntax of the DAV:response element defined in [RFC2518], | ||||
which is defined in Section 14 below. This pseudo-property is not | ||||
expected to be stored on the reference resource. It is modeled as | ||||
a property only so that it can be returned inside a DAV:prop | ||||
element in a Multi-Status response. | ||||
Value: href containing the absolute URI of the target resource. | ||||
<!ELEMENT location href > | ||||
13. XML Elements | 13. XML Elements | |||
13.1 redirectref XML Element | 13.1 redirectref XML Element | |||
Name: redirectref | Name: redirectref | |||
Namespace: DAV: | Namespace: DAV: | |||
Purpose: Used as the value of the DAV:resourcetype property to | Purpose: Used as the value of the DAV:resourcetype property to | |||
specify that the resource type is a redirect reference resource. | specify that the resource type is a redirect reference resource. | |||
<!ELEMENT redirectref EMPTY > | <!ELEMENT redirectref EMPTY > | |||
14. Extensions to the DAV:response XML Element for Multi-Status | 14. Extensions to the DAV:response XML Element for Multi-Status | |||
Responses | Responses | |||
As described in Section 7, the DAV:location pseudo-property and the | As described in Section 7, the DAV:location element may be returned | |||
DAV:resourcetype property may be returned in the DAV:response element | in the DAV:response element of a 207 Multi-Status response, to allow | |||
of a 207 Multi-Status response, to allow clients to resubmit their | clients to resubmit their requests to the target resource of a | |||
requests to the target resource of a redirect reference resource. | redirect reference resource. | |||
Whenever these properties are included in a Multi-Status response, | ||||
they are placed in a DAV:prop element associated with the href to | ||||
which they apply. This structure provides a framework for future | ||||
extensions by other standards that may need to include additional | ||||
properties in their responses. | ||||
Consequently, the definition of the DAV:response XML element changes | Consequently, the definition of the DAV:response XML element changes | |||
to the following: | to the following: | |||
<!ELEMENT response (href, ((href*, status, prop?) | (propstat+)), | <!ELEMENT response (href, ((href*, status)|(propstat+)), | |||
responsedescription?) > | responsedescription?, location?) > | |||
<!ELEMENT location (href) > | ||||
15. Capability Discovery | 15. Capability Discovery | |||
Sections 9.1 and 15 of [RFC2518] describe the use of compliance | Sections 9.1 and 15 of [RFC2518] describe the use of compliance | |||
classes with the DAV header in responses to OPTIONS, to indicate | classes with the DAV header in responses to OPTIONS, to indicate | |||
which parts of the WebDAV Distributed Authoring protocols the | which parts of the WebDAV Distributed Authoring protocols the | |||
resource supports. This specification defines an OPTIONAL extension | resource supports. This specification defines an OPTIONAL extension | |||
to [RFC2518]. It defines a new compliance class, called | to [RFC2518]. It defines a new compliance class, called | |||
redirectrefs, for use with the DAV header in responses to OPTIONS | redirectrefs, for use with the DAV header in responses to OPTIONS | |||
requests. If a resource does support redirect references, its | requests. If a resource does support redirect references, its | |||
skipping to change at page 34, line 7 | skipping to change at page 32, line 7 | |||
Sufficiently powerful access control mechanisms can control this risk | Sufficiently powerful access control mechanisms can control this risk | |||
to some extent. Property-level access control could prevent users | to some extent. Property-level access control could prevent users | |||
from examining the DAV:reftarget property. (The Location header | from examining the DAV:reftarget property. (The Location header | |||
returned in responses to requests on redirect reference resources | returned in responses to requests on redirect reference resources | |||
reveals the same information, however.) | reveals the same information, however.) | |||
This risk is no greater than the similar risk posed by HTML links. | This risk is no greater than the similar risk posed by HTML links. | |||
17. Internationalization Considerations | 17. Internationalization Considerations | |||
This specification follows the practices of [RFC2518] in encoding all | All internationalization considerations mentioned in [RFC2518] also | |||
human-readable content using XML [XML] and in the treatment of names. | apply to this document. | |||
Consequently, this specification complies with the IETF Character Set | ||||
Policy [RFC2277]. | ||||
WebDAV applications MUST support the character set tagging, character | ||||
set encoding, and the language tagging functionality of the XML | ||||
specification. This constraint ensures that the human-readable | ||||
content of this specification complies with [RFC2277]. | ||||
As in [RFC2518], names in this specification fall into three | ||||
categories: names of protocol elements such as methods and headers, | ||||
names of XML elements, and names of properties. Naming of protocol | ||||
elements follows the precedent of HTTP, using English names encoded | ||||
in USASCII for methods and headers. The names of XML elements used | ||||
in this specification are English names encoded in UTF-8. | ||||
For error reporting, [RFC2518] follows the convention of HTTP/1.1 | ||||
status codes, including with each status code a short, English | ||||
description of the code (e.g., 423 Locked). Internationalized | ||||
applications will ignore this message, and display an appropriate | ||||
message in the user's language and character set. | ||||
This specification introduces no new strings that are displayed to | ||||
users as part of normal, error-free operation of the protocol. | ||||
For rationales for these decisions and advice for application | ||||
implementors, see [RFC2518]. | ||||
18. IANA Considerations | 18. IANA Considerations | |||
All IANA considerations mentioned in [RFC2518] also apply to this | All IANA considerations mentioned in [RFC2518] also apply to this | |||
document. | document. | |||
19. Contributors | 19. Contributors | |||
Many thanks to Jason Crawford, Jim Davis, Chuck Fay and Judith Slein | Many thanks to Jason Crawford, Jim Davis, Chuck Fay and Judith Slein | |||
who can take credit for big parts of the original design of this | who can take credit for big parts of the original design of this | |||
skipping to change at page 38, line 7 | skipping to change at page 36, line 7 | |||
Bruce Cragun, Spencer Dawkins, Mark Day, Rajiv Dulepet, David Durand, | Bruce Cragun, Spencer Dawkins, Mark Day, Rajiv Dulepet, David Durand, | |||
Roy Fielding, Yaron Goland, Fred Hitt, Alex Hopmann, James Hunt, | Roy Fielding, Yaron Goland, Fred Hitt, Alex Hopmann, James Hunt, | |||
Marcus Jager, Chris Kaler, Manoj Kasichainula, Rohit Khare, Daniel | Marcus Jager, Chris Kaler, Manoj Kasichainula, Rohit Khare, Daniel | |||
LaLiberte, Steve Martin, Larry Masinter, Jeff McAffer, Joe Orton, | LaLiberte, Steve Martin, Larry Masinter, Jeff McAffer, Joe Orton, | |||
Surendra Koduru Reddy, Juergen Reuter, Max Rible, Sam Ruby, Bradley | Surendra Koduru Reddy, Juergen Reuter, Max Rible, Sam Ruby, Bradley | |||
Sergeant, Nick Shelness, John Stracke, John Tigue, John Turner, Kevin | Sergeant, Nick Shelness, John Stracke, John Tigue, John Turner, Kevin | |||
Wiggen, and others. | Wiggen, and others. | |||
Normative References | Normative References | |||
[RFC2277] Alvestrand, H., "IETF Policy on Character Sets and | ||||
Languages", BCP 18, RFC 2277, January 1998. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform | [RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform | |||
Resource Identifiers (URI): Generic Syntax", RFC 2396, | Resource Identifiers (URI): Generic Syntax", RFC 2396, | |||
August 1998. | August 1998. | |||
[RFC2518] Goland, Y., Whitehead, E., Faizi, A., Carter, S. and D. | [RFC2518] Goland, Y., Whitehead, E., Faizi, A., Carter, S. and D. | |||
Jensen, "HTTP Extensions for Distributed Authoring -- | Jensen, "HTTP Extensions for Distributed Authoring -- | |||
WEBDAV", RFC 2518, February 1999. | WEBDAV", RFC 2518, February 1999. | |||
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext | |||
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
[XML] Bray, T., Paoli, J., Sperberg-McQueen, C. and E. Maler, | ||||
"Extensible Markup Language (XML) 1.0 (2nd ed)", W3C | ||||
REC-xml, October 2000, <http://www.w3.org/TR/2000/ | ||||
REC-xml-20001006>. | ||||
[1] <mailto:w3c-dist-auth@w3.org> | [1] <mailto:w3c-dist-auth@w3.org> | |||
[2] <mailto:w3c-dist-auth-request@w3.org?subject=subscribe> | [2] <mailto:w3c-dist-auth-request@w3.org?subject=subscribe> | |||
[3] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0316.html> | ||||
[4] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0222.html> | ||||
[5] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0316.html> | ||||
[6] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0316.html> | ||||
[7] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0300.html> | ||||
[8] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0316.html> | ||||
[9] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0359.html> | ||||
[10] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0289.html> | ||||
[11] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0285.html> | ||||
[12] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0284.html> | ||||
[13] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0288.html> | ||||
[14] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0290.html> | ||||
[15] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0266.html> | ||||
[16] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0292.html> | ||||
[17] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0308.html> | ||||
[18] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0266.html> | ||||
[19] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0298.html> | ||||
[20] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0266.html> | ||||
[21] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0266.html> | ||||
[22] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0302.html> | ||||
[23] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0316.html> | ||||
[24] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0316.html> | ||||
[25] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0316.html> | ||||
[26] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0307.html> | ||||
[27] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0304.html> | ||||
[28] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0359.html> | ||||
[29] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0359.html> | ||||
[30] <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0305.html> | ||||
Authors' Addresses | Authors' Addresses | |||
Jim Whitehead | Jim Whitehead | |||
UC Santa Cruz, Dept. of Computer Science | UC Santa Cruz, Dept. of Computer Science | |||
1156 High Street | 1156 High Street | |||
Santa Cruz, CA 95064 | Santa Cruz, CA 95064 | |||
US | US | |||
EMail: ejw@cse.ucsc.edu | EMail: ejw@cse.ucsc.edu | |||
skipping to change at page 43, line 5 | skipping to change at page 39, line 42 | |||
Clemm. Moved some of the original authors names to new Contributors | Clemm. Moved some of the original authors names to new Contributors | |||
section. Add and close issue "9-MKRESOURCE-vs-relative-URI". Close | section. Add and close issue "9-MKRESOURCE-vs-relative-URI". Close | |||
issue "lc-72-trailingslash". Close issue "lc-60-ex". Update issue | issue "lc-72-trailingslash". Close issue "lc-60-ex". Update issue | |||
"lc-85-301" with proposal. Close issue "lc-06-reftarget-relative" | "lc-85-301" with proposal. Close issue "lc-06-reftarget-relative" | |||
(9-MKRESOURCE-vs-relative-URI was a duplicate of this one). Also | (9-MKRESOURCE-vs-relative-URI was a duplicate of this one). Also | |||
remove section 9.1 (example for MKRESOURCE vs relative URIs). Add | remove section 9.1 (example for MKRESOURCE vs relative URIs). Add | |||
and resolve issue "11.2-apply-to-redirect-ref-syntax" (header now has | and resolve issue "11.2-apply-to-redirect-ref-syntax" (header now has | |||
values "T" and "F"). Also some cleanup for "rfc2606-compliance". | values "T" and "F"). Also some cleanup for "rfc2606-compliance". | |||
Typo fixes. Add and resolve "15.1-options-response". | Typo fixes. Add and resolve "15.1-options-response". | |||
B.5 Since draft-ietf-webdav-redirectref-protocol-06 | ||||
Resolve issues "lc-19-direct-ref", "lc-28-lang", "lc-29-lang", | ||||
"lc-44-pseudo", "lc-53-s10", "lc-61-pseudo", "lc-63-move", | ||||
"lc-80-i18n" and "rfc2606-compliance". Start work on index. Add new | ||||
issue "old_clients". | ||||
Appendix C. Resolved issues (to be removed by RFC Editor before | Appendix C. Resolved issues (to be removed by RFC Editor before | |||
publication) | publication) | |||
Issues that were either rejected or resolved in this version of this | Issues that were either rejected or resolved in this version of this | |||
document. | document. | |||
C.1 lc-60-ex | C.1 lc-19-direct-ref | |||
Type: change | Type: change | |||
[3] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0266.html> | ||||
reuterj@ira.uka.de (2000-02-14): Section 7, para 3: Make it clear | reuterj@ira.uka.de (2000-02-07): Section 4, para 5 and Section 6, | |||
that these are just examples of client behavior, and are not meant to | para 3 discussions of the Apply-to-Redirect-Ref header make it sound | |||
limit the client's behavior to these options. | as if we are specifying direct reference behavior. | |||
Resolution (2003-10-13): Agreed to delete this paragraph. Continue | Resolution (2003-11-04): Change these passages so that the contrast | |||
discussion of what information should be returned with 302 in | is between applying the method to the redirect reference and | |||
multistatus. Just location? Also redirectref? Update: ret gid of | responding with a 302. | |||
pseudo-property and special response format, define new response | ||||
element instead. See ossue lc-61-pseudo. | ||||
C.2 lc-06-reftarget-relative | C.2 rfc2606-compliance | |||
Type: change | Type: editor | |||
[4] | julian.reschke@greenbytes.de (2003-10-02): Ensure that examples use | |||
only sample domains as per RFC2606. | ||||
joe@orton.demon.co.uk (2000-01-29): Why does the spec talk about | C.3 lc-28-lang | |||
relative URIs in DAV:reftarget in MKRESOURCE requests? Is the server | ||||
required to resolve the relative URI and store it as absolute? Is the | ||||
server required to keep DAV:reftarget pointing to the target resource | ||||
as the reference / target move, or is DAV:reftarget a dead property? | ||||
Resolution (2003-10-13): DAV:reftarget is readonly and present only | Type: edit | |||
on redirect references that are also WebDAV resources. Add a method | ||||
for setting the target. Change definition of Redirect-Ref header so | ||||
that it has the target as its value (comes back on all 302 | ||||
responses). Server MUST store the target exactly as it is set. It | ||||
MUST NOT resolve relatives to absolutes and MUST NOT update if target | ||||
resource moves. See also issue 17, 43, 50, 57 | ||||
C.3 lc-71-relative | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0266.html> | ||||
Type: change | reuterj@ira.uka.de (2000-02-07): Section 6: Get rid of the sentence | |||
"A reference-aware WebDAV client can act on this response in one of | ||||
two ways." A client can act on the response in any way it wants. | ||||
[5] | Resolution (2003-11-04): Agreed. See also issue 48. | |||
reuterj@ira.uka.de (2000-02-14): Section 9: Base URI should be the | ||||
Request-URI or href minus its final segment. | ||||
Resolution (2003-10-08): Original WG comment: Fix this. However, this | C.4 lc-29-lang | |||
is just a misunderstanding. The process of resolving a relative URI | ||||
against a hierarchical base URI already involves removal of the last | ||||
path segment, so the draft is correct here. | ||||
C.4 9-MKRESOURCE-vs-relative-URI | Type: edit | |||
Type: change | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0266.html> | ||||
reuterj@ira.uka.de (2000-02-07): Section 6, para 4: Obvious, doesn't | ||||
need to be stated. Maybe note in an example. | ||||
julian.reschke@greenbytes.de (2003-10-08): Do not say anything about | Resolution (2003-11-04): Agreed. See also issue 48. | |||
MKRESOURCE vs relative URIs. The server is supposed to store the | ||||
relative URI, thus the issue of resolving the URI does only apply | ||||
upon retrieval, not creation. | ||||
C.5 lc-72-trailingslash | C.5 lc-44-pseudo | |||
Type: change | Type: change | |||
[6] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0302.html> | ||||
reuterj@ira.uka.de (2000-02-14): Section 10: Forbid DAV:reftarget | yarong@Exchange.Microsoft.com (2000-02-11): Instead of adding an | |||
from ending in "/" | optional prop XML element to the response element in 207 responses, | |||
define a new location XML element and a new refresource XML element. | ||||
julian.reschke@greenbytes.de (): (last call WG response): Make the | Resolution: Agree to define new XML elements that are not | |||
note warn about the possibility of two slashes in a row, recommend | pseudo-properties. Disagreement about whether refresource is needed. | |||
against ending target with a slash, since that could result in two | See issue 61. | |||
slashes in a row. | ||||
Resolution (2003-10-09): It seems that the rule in the 3rd paragraph | C.6 lc-61-pseudo | |||
already explains how to deal with this situation. No change. | ||||
C.6 lc-50-blindredirect | Type: change | |||
<http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | ||||
0316.html> | ||||
reuterj@ira.uka.de (2000-02-14): Section 7: It doesn't make sense to | ||||
ask future editors of RFC 2518 to define DAV:location with the | ||||
semantics it has here. RFC 2518 should provide the information in the | ||||
Location header somehow in multistatus responses, but not by using | ||||
properties. | ||||
Resolution (2003-10-31): Define an XML element for location that is | ||||
not a pseudo-property. We'll keep the recommendation that RFC 2518 | ||||
add this for 302 responses. See also issue 44. | ||||
C.7 lc-62-oldclient | ||||
Type: change | Type: change | |||
[7] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0316.html> | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Replace current language | reuterj@ira.uka.de (2000-02-14): Section 7: It's too strong to claim | |||
explaining the purpose of the Redirect-Ref header with language that | that non-referencing clients can't process 302 responses occurring in | |||
simply states that it marks blind 302 responses from redirect | Multi-Status responses. They just have an extra round trip for each | |||
resources. (Section 6.3, 11.1) | 302. | |||
Resolution (2003-10-02): Section 6.3 was removed in response to issue | Resolution (2003-10-31): Remove last sentence of the paragraph that | |||
48. In 11.1, change the definition of the Redirect-Ref header to have | recommends changes to RFC 2518. | |||
the value of the target (relative URI) as its value. Then we don't | ||||
need a method for retrieving the target's relative URI. Presence of | ||||
the Redirect-Ref header lets the client know that the resource | ||||
accepts Apply-To-RR header and the new method for updating target. | ||||
Reject Yaron's suggested language, but make the above changes. | ||||
C.7 lc-74-terminology | C.8 lc-63-move | |||
Type: change | Type: change | |||
[8] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0316.html> | ||||
reuterj@ira.uka.de (2000-02-14): "plain HTTP/1.1 redirect" - find | reuterj@ira.uka.de (2000-02-14): Section 7.1: Is MOVE atomic from the | |||
some good name for this an use it consistently | perspective of a client? Agrees that there should be no 302s for | |||
member redirect references, but finds the rationale dubious. | ||||
Resolution (2003-10-02): Remove the whole sentence. | Resolution (2003-11-11): Remove 7.1. Reword 7.2 to avoid concerns | |||
with "poses special problems" and "due to atomicity". | ||||
C.8 11.2-apply-to-redirect-ref-syntax | C.9 lc-53-s10 | |||
Type: change | Type: change | |||
julian.reschke@greenbytes.de (2003-10-17): Many toolkits have | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
problems sending empty HTTP headers (optimizing them away). | 0304.html> | |||
Resolution (2003-10-17): Define values "T" and "F" (similar to WevDAV | yarong@Exchange.Microsoft.com (2000-02-11): The behavior described in | |||
Overwrite header). This will also allow clients to express that they | this section would have a very serious impact on the efficiency of | |||
are aware of redirect extensions without also having to apply the | mapping Request-URIs to resources in HTTP request processing. Also | |||
request to the reference resource. | specify another type of redirect resource that does not behave as in | |||
section 10, but instead would "expose the behavior we see today in | ||||
various HTTP servers that allow their users to create 300 resources." | ||||
Be sure we know what behavior will be if the redirect location is not | ||||
an HTTP URL, but, say ftp. | ||||
C.9 15.1-options-response | Resolution (2003-11-04): We won't define 2 sorts of redirect | |||
references here. Servers SHOULD respond with 302 as described here, | ||||
but if they can't do that, respond with 404 Not Found. (It's hard to | ||||
modularize the behavior specified - it impacts processing Not Found | ||||
cases of all methods, so you can't just add it to an HTTP server in a | ||||
redirect ref module.) | ||||
C.10 lc-76-location | ||||
Type: change | Type: change | |||
julian.reschke@greenbytes.de (2003-10-20): Fix OPTIONS response | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
("Public" header mentioned, "Allow" header value line break). Remove | 0359.html> | |||
irrelevant response headers. | ||||
Resolution (2003-10-20): Fix. | reuterj@ira.uka.de (2000-02-22): 12.2: Make DAV:location a real | |||
(live) property, get rid of the DAV:reftarget property | ||||
C.10 lc-79-accesscontrol | Resolution (2003-10-31): Pseudo-property was removed. | |||
C.11 lc-80-i18n | ||||
Type: change | Type: change | |||
[9] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0359.html> | ||||
reuterj@ira.uka.de (2000-02-22): Section 16.4: "In some environments, | reuterj@ira.uka.de (2000-02-22): Section 17: Could get rid of a lot | |||
the owner of a resource might be able to use access control to | of this section, since this protocol extends WebDAV. Just reference | |||
prevent others from creating references to that resource." That would | [WebDAV]. | |||
not be consistent with the concept of redirect references as weak | ||||
links (e.g. think of moving a resource to a different locationo that | ||||
is already the target of some redirection reference. | ||||
Resolution (2003-10-02): Remove the statement. | julian.reschke@greenbytes.de (2003-10-02): True, but I note that | |||
other specs have re-stated these considerations as well. Opinions? | ||||
Resolution (2003-11-11): Just point to RFC2518. Remove RFC2277 and | ||||
XML from references (not needed anymore). | ||||
Appendix D. Open issues (to be removed by RFC Editor before publication) | Appendix D. Open issues (to be removed by RFC Editor before publication) | |||
D.1 lc-85-301 | D.1 old_clients | |||
Type: change | ||||
<http://lists.w3.org/Archives/Public/w3c-dist-auth/2003OctDec/ | ||||
0180.html> | ||||
julian.reschke@greenbytes.de (2003-11-10): There are (at least) two | ||||
major design goals, but unfortunately both are in direct | ||||
contradiction: #1: Maximum consistency with HTTP/1.1 (RFC2616). This | ||||
means that any request that addresses a redirect reference resource | ||||
MUST result in a 3xx status code (obviously the whole point is that | ||||
GET MUST result in a redirection, and if it does, it's hard to say | ||||
why other methods such as PUT or DELETE should behave differently). | ||||
Therefore, the redirect reference protocol introduces a new request | ||||
header ("Apply-To-Redirect-Ref") through which a client can indicate | ||||
that the request indeed should be applied to the redirect reference | ||||
resource itself. #2: Maximum usability with existing clients. For | ||||
instance, the Microsoft Webfolder client will not be able to DELETE a | ||||
redirect reference resource unless the server deviates from #1. Right | ||||
now I'm not sure about the best way to resolve this. Currently the | ||||
spec chooses #1 (back when this decision was made, there was probably | ||||
the assumption that existing clients would quickly be updated -- | ||||
something that probably isn't true today). However this may result in | ||||
implementers either just ignoring these rules, or adding special | ||||
workarounds based on "User Agent" detection. | ||||
D.2 lc-85-301 | ||||
Type: change | Type: change | |||
ejw@cse.ucsc.edu (2000-01-03): Support creation of other than 302 | ejw@cse.ucsc.edu (2000-01-03): Support creation of other than 302 | |||
redirects, especially 301. | redirects, especially 301. | |||
julian.reschke@greenbytes.de (2003-10-13): HTTP seems to distinguish | julian.reschke@greenbytes.de (2003-10-13): HTTP seems to distinguish | |||
the following use cases: (a) permanent redirect (301), (b) temporary | the following use cases: (a) permanent redirect (301), (b) temporary | |||
redirect (302 or 307), (c) redirect to a GET location after POST | redirect (302 or 307), (c) redirect to a GET location after POST | |||
(303) and (d) agent-driven negotiation (300). Among these, (a) and | (303) and (d) agent-driven negotiation (300). Among these, (a) and | |||
(b) seem to be well understood, so we should support both. (c) | (b) seem to be well understood, so we should support both. (c) | |||
doesn't seem to be applicable. (d) may become interesting when user | doesn't seem to be applicable. (d) may become interesting when user | |||
agents start supporting it, so the spec should be flexible enough to | agents start supporting it, so the spec should be flexible enough to | |||
support a feature extension for that. For now I propose that the | support a feature extension for that. For now I propose that the | |||
client is able to specify the redirection type as a resource type, | client is able to specify the redirection type as a resource type, | |||
such as "DAV:permanent-redirect-reference" and | such as "DAV:permanent-redirect-reference" and | |||
"DAV:temporary-redirect-reference". This spec would only define the | "DAV:temporary-redirect-reference". This spec would only define the | |||
behaviour for these two resource types and would allow future | behaviour for these two resource types and would allow future | |||
extensions using new resource types and suggested response codes. | extensions using new resource types and suggested response codes. | |||
D.2 lc-38-not-hierarchical | D.3 lc-38-not-hierarchical | |||
Type: change | Type: change | |||
[10] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0289.html> | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Not Hierarchical: The | yarong@Exchange.Microsoft.com (2000-02-11): Not Hierarchical: The | |||
first sentence of the second paragraph of the introduction of the | first sentence of the second paragraph of the introduction of the | |||
redirect spec asserts that the URIs of WebDAV compliant resources | redirect spec asserts that the URIs of WebDAV compliant resources | |||
match to collections. The WebDAV standard makes no such requirement. | match to collections. The WebDAV standard makes no such requirement. | |||
I therefore move that this sentence be stricken. | I therefore move that this sentence be stricken. | |||
Resolution: State the more general HTTP rationale first (alternative | Resolution: State the more general HTTP rationale first (alternative | |||
names for the same resource), then introduce the collection hierarchy | names for the same resource), then introduce the collection hierarchy | |||
rationale, which applies only if you are in a WebDAV-compliant space. | rationale, which applies only if you are in a WebDAV-compliant space. | |||
D.3 lc-36-server | D.4 lc-36-server | |||
Type: change | Type: change | |||
[11] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0285.html> | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Servers: Replace "server" | yarong@Exchange.Microsoft.com (2000-02-11): Servers: Replace "server" | |||
with "unrelated system" throughout. | with "unrelated system" throughout. | |||
Resolution: Try replacing "server" with "host" in some contexts, | Resolution: Try replacing "server" with "host" in some contexts, | |||
rephrasing in passive voice in others. See also issue 40. | rephrasing in passive voice in others. See also issue 40. | |||
D.4 lc-33-forwarding | D.5 lc-33-forwarding | |||
Type: change | Type: change | |||
[12] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0284.html> | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Forwarding: Replace | yarong@Exchange.Microsoft.com (2000-02-11): Forwarding: Replace | |||
"forward" with "redirect" throughout. | "forward" with "redirect" throughout. | |||
Resolution: Use "redirect" for the behavior redirect resources do | Resolution: Use "redirect" for the behavior redirect resources do | |||
exhibit. Use "forward" for the contrasting behavior (passing a method | exhibit. Use "forward" for the contrasting behavior (passing a method | |||
on to the target with no client action needed). Define these two | on to the target with no client action needed). Define these two | |||
terms. See also issue 40. | terms. See also issue 40. | |||
D.5 lc-37-integrity | D.6 lc-37-integrity | |||
Type: change | Type: change | |||
[13] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0288.html> | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Integrity: Intro, para 7 | yarong@Exchange.Microsoft.com (2000-02-11): Integrity: Intro, para 7 | |||
"Servers are not required to enforce the integrity of redirect | "Servers are not required to enforce the integrity of redirect | |||
references." Integrity is not defined. Replace with something | references." Integrity is not defined. Replace with something | |||
clearer. | clearer. | |||
Resolution: Rewrite to say that the server MUST NOT update the target | Resolution: Rewrite to say that the server MUST NOT update the target | |||
See also issue 6. | See also issue 6. | |||
D.6 3-terminology-redirectref | D.7 3-terminology-redirectref | |||
Type: change | Type: change | |||
[14] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0290.html> | ||||
julian.reschke@greenbytes.de (2003-07-27): Consider global rename of | julian.reschke@greenbytes.de (2003-07-27): Consider global rename of | |||
"redirect reference resource" to "redirect resource". | "redirect reference resource" to "redirect resource". | |||
D.7 lc-19-direct-ref | ||||
Type: change | ||||
[15] | ||||
reuterj@ira.uka.de (2000-02-07): Section 4, para 5 and Section 6, | ||||
para 3 discussions of the Apply-to-Redirect-Ref header make it sound | ||||
as if we are specifying direct reference behavior. | ||||
Resolution: Change these passages so that the contrast is between | ||||
applying the method to the redirect reference and responding with a | ||||
302. | ||||
D.8 lc-41-no-webdav | D.8 lc-41-no-webdav | |||
Type: change | Type: change | |||
[16] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0292.html> | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Make redirect references | yarong@Exchange.Microsoft.com (2000-02-11): Make redirect references | |||
independent of the rest of WebDAV. The creation method for redirect | independent of the rest of WebDAV. The creation method for redirect | |||
references shouldn't require an XML request body. | references shouldn't require an XML request body. | |||
Resolution: We will make redirect references independent of the rest | Resolution: We will make redirect references independent of the rest | |||
of WebDAV. MKREF will not have an XML request body. | of WebDAV. MKREF will not have an XML request body. | |||
D.9 lc-58-update | D.9 lc-58-update | |||
Type: change | Type: change | |||
[17] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0308.html> | ||||
yarong@Exchange.Microsoft.com (2000-02-11): There needs to be a way | yarong@Exchange.Microsoft.com (2000-02-11): There needs to be a way | |||
to update the target of a redirect reference. | to update the target of a redirect reference. | |||
Resolution: Agreed. See also issues 6, 43. | Resolution: Agreed. See also issues 6, 43. | |||
D.10 lc-24-properties | D.10 lc-24-properties | |||
Type: change | Type: change | |||
[18] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0266.html> | ||||
reuterj@ira.uka.de (2000-02-07): Section 5.1: Replace the sentence | reuterj@ira.uka.de (2000-02-07): Section 5.1: Replace the sentence | |||
"The properties of the new resource are as specified by the | "The properties of the new resource are as specified by the | |||
DAV:propertyupdate request body, using PROPPATCH semantics" with the | DAV:propertyupdate request body, using PROPPATCH semantics" with the | |||
following: "The MKRESOURCE request MAY contain a DAV:propertyupdate | following: "The MKRESOURCE request MAY contain a DAV:propertyupdate | |||
request body to initialize resource properties. Herein, the semantics | request body to initialize resource properties. Herein, the semantics | |||
is the same as when sending a MKRESOURCE request without a request | is the same as when sending a MKRESOURCE request without a request | |||
body, followed by a PROPPATCH with the DAV:propertyupdate request | body, followed by a PROPPATCH with the DAV:propertyupdate request | |||
body." | body." | |||
Resolution: No longer relevant once we switch to MKREF with no | Resolution: No longer relevant once we switch to MKREF with no | |||
request body. | request body. | |||
D.11 rfc2606-compliance | D.11 lc-48-s6 | |||
Type: editor | ||||
julian.reschke@greenbytes.de (2003-10-02): Ensure that examples use | ||||
only sample domains as per RFC2606. | ||||
D.12 lc-48-s6 | ||||
Type: change | Type: change | |||
[19] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0298.html> | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Replace all of section 6 | yarong@Exchange.Microsoft.com (2000-02-11): Replace all of section 6 | |||
with just this: A redirect resource, upon receiving a request without | with just this: A redirect resource, upon receiving a request without | |||
an Apply-To-Redirect-Ref header, MUST respond with a 302 (Found) | an Apply-To-Redirect-Ref header, MUST respond with a 302 (Found) | |||
response. The 302 (Found) response MUST include a location header | response. The 302 (Found) response MUST include a location header | |||
identifying the target and a Redirect-Ref header. If a redirect | identifying the target and a Redirect-Ref header. If a redirect | |||
resource receives a request with an Apply-To-Redirect-Ref header then | resource receives a request with an Apply-To-Redirect-Ref header then | |||
the redirect reference resource MUST apply the method to itself | the redirect reference resource MUST apply the method to itself | |||
rather than blindly returning a 302 (Found) response. | rather than blindly returning a 302 (Found) response. | |||
Resolution: Keep a summary along the lines of Yaron's proposal (don't | Resolution: Keep a summary along the lines of Yaron's proposal (don't | |||
use the word "blindly"). Keep the bullets detailing the headers to be | use the word "blindly"). Keep the bullets detailing the headers to be | |||
returned. Delete the rest, including the examples. See also issue 28, | returned. Delete the rest, including the examples. See also issue 28, | |||
29, 30, 31, 32. | 29, 30, 31, 32. | |||
D.13 lc-28-lang | D.12 lc-57-noautoupdate | |||
Type: edit | ||||
[20] | ||||
reuterj@ira.uka.de (2000-02-07): Section 6: Get rid of the sentence | ||||
"A reference-aware WebDAV client can act on this response in one of | ||||
two ways." A client can act on the response in any way it wants. | ||||
Resolution: Agreed. See also issue 48. | ||||
D.14 lc-29-lang | ||||
Type: edit | ||||
[21] | ||||
reuterj@ira.uka.de (2000-02-07): Section 6, para 4: Obvious, doesn't | ||||
need to be stated. Maybe note in an example. | ||||
Resolution: Agreed. See also issue 48. | ||||
D.15 lc-44-pseudo | ||||
Type: change | ||||
[22] | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Instead of adding an | ||||
optional prop XML element to the response element in 207 responses, | ||||
define a new location XML element and a new refresource XML element. | ||||
Resolution: Agree to define new XML elements that are not | ||||
pseudo-properties. Disagreement about whether refresource is needed. | ||||
See issue 61. | ||||
D.16 lc-61-pseudo | ||||
Type: change | ||||
[23] | ||||
reuterj@ira.uka.de (2000-02-14): Section 7: It doesn't make sense to | ||||
ask future editors of RFC 2518 to define DAV:location with the | ||||
semantics it has here. RFC 2518 should provide the information in the | ||||
Location header somehow in multistatus responses, but not by using | ||||
properties. | ||||
Resolution: Define an XML element for location that is not a | ||||
pseudo-property. We'll keep the recommendation that RFC 2518 add this | ||||
for 302 responses. See also issue 44. | ||||
D.17 lc-62-oldclient | ||||
Type: change | ||||
[24] | ||||
reuterj@ira.uka.de (2000-02-14): Section 7: It's too strong to claim | ||||
that non-referencing clients can't process 302 responses occurring in | ||||
Multi-Status responses. They just have an extra round trip for each | ||||
302. | ||||
Resolution: Remove last sentence of the paragraph that recommends | ||||
changes to RFC 2518. | ||||
D.18 lc-63-move | ||||
Type: change | ||||
[25] | ||||
reuterj@ira.uka.de (2000-02-14): Section 7.1: Is MOVE atomic from the | ||||
perspective of a client? Agrees that there should be no 302s for | ||||
member redirect references, but finds the rationale dubious. | ||||
Resolution: Remove 7.1. Reword 7.2 to avoid concerns with "poses | ||||
special problems" and "due to atomicity". | ||||
D.19 lc-57-noautoupdate | ||||
Type: change | Type: change | |||
[26] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0307.html> | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Add language to forbid | yarong@Exchange.Microsoft.com (2000-02-11): Add language to forbid | |||
servers from automatically updating redirect resources when their | servers from automatically updating redirect resources when their | |||
targets move. | targets move. | |||
Resolution: Agreed. See also issue 6. | Resolution: Agreed. See also issue 6. | |||
D.20 lc-53-s10 | D.13 12.1-property-name | |||
Type: change | ||||
[27] | ||||
yarong@Exchange.Microsoft.com (2000-02-11): The behavior described in | ||||
this section would have a very serious impact on the efficiency of | ||||
mapping Request-URIs to resources in HTTP request processing. Also | ||||
specify another type of redirect resource that does not behave as in | ||||
section 10, but instead would "expose the behavior we see today in | ||||
various HTTP servers that allow their users to create 300 resources." | ||||
Be sure we know what behavior will be if the redirect location is not | ||||
an HTTP URL, but, say ftp. | ||||
Resolution: We won't define 2 sorts of redirect references here. | ||||
Servers SHOULD respond with 302 as described here, but if they can't | ||||
do that, respond with 404 Not Found. (It's hard to modularize the | ||||
behavior specified - it impacts processing Not Found cases of all | ||||
methods, so you can't just add it to an HTTP server in a redirect ref | ||||
module.) | ||||
D.21 12.1-property-name | ||||
Type: change | Type: change | |||
julian.reschke@greenbytes.de (2003-10-06): Sync names for | julian.reschke@greenbytes.de (2003-10-06): Sync names for | |||
DAV:reftarget property and "Redirect-Ref" response headers. | DAV:reftarget property and "Redirect-Ref" response headers. | |||
D.22 lc-76-location | D.14 lc-55-iana | |||
Type: change | Type: change | |||
[28] | <http://lists.w3.org/Archives/Public/w3c-dist-auth/2000JanMar/ | |||
0305.html> | ||||
reuterj@ira.uka.de (2000-02-22): 12.2: Make DAV:location a real | ||||
(live) property, get rid of the DAV:reftarget property | ||||
D.23 lc-80-i18n | ||||
Type: change | yarong@Exchange.Microsoft.com (2000-02-11): Expand the IANA section | |||
to list all methods, headers, XML elements, MIME types, URL schemes, | ||||
etc., defined by the spec. | ||||
[29] | Resolution: Agreed. | |||
reuterj@ira.uka.de (2000-02-22): Section 17: Could get rid of a lot | Index | |||
of this section, since this protocol extends WebDAV. Just reference | ||||
[WebDAV]. | ||||
julian.reschke@greenbytes.de (2003-10-02): True, but I note that | A | |||
other specs have re-stated these considerations as well. Opinions? | Apply-To-Redirect-Ref header 25 | |||
D.24 lc-55-iana | D | |||
DAV header | ||||
compliance class 'redirectrefs' 29 | ||||
DAV:redirectref resource type 27 | ||||
DAV:reftarget property 26 | ||||
Type: change | H | |||
Headers | ||||
Apply-To-Redirect-Ref 25 | ||||
Redirect-Ref 25 | ||||
[30] | M | |||
Methods | ||||
MKRESOURCE 9 | ||||
MKRESOURCE method 9 | ||||
yarong@Exchange.Microsoft.com (2000-02-11): Expand the IANA section | P | |||
to list all methods, headers, XML elements, MIME types, URL schemes, | Properties | |||
etc., defined by the spec. | DAV:reftarget 26 | |||
Resolution: Agreed. | R | |||
Redirect-Ref header 25 | ||||
Resource Types | ||||
DAV:redirectref 27 | ||||
Intellectual Property Statement | Intellectual Property Statement | |||
The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
intellectual property or other rights that might be claimed to | intellectual property or other rights that might be claimed to | |||
pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
this document or the extent to which any license under such rights | this document or the extent to which any license under such rights | |||
might or might not be available; neither does it represent that it | might or might not be available; neither does it represent that it | |||
has made any effort to identify any such rights. Information on the | has made any effort to identify any such rights. Information on the | |||
IETF's procedures with respect to rights in standards-track and | IETF's procedures with respect to rights in standards-track and | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |