- From: Yaron Goland <yarong@microsoft.com>
- Date: Tue, 28 Jul 1998 19:57:49 -0700
- To: "'Henrik Frystyk Nielsen'" <frystyk@w3.org>, w3c-dist-auth@w3.org
DAV doesn't really deal with this although its multi-status response format could be trivially tasked to do so. Frankly, I think #4 is the most reasonable. Yaron > -----Original Message----- > From: Henrik Frystyk Nielsen [mailto:frystyk@w3.org] > Sent: Monday, July 27, 1998 10:02 AM > To: w3c-dist-auth@w3.org > Subject: HTTP/1.1 Issue: Returning metainformation on a 201 (Created) > response > > > I was asked to send this mail to you guys to hear if you > have thought of > this in WebDAV. I am sorry if you have already discussed this > to death! > > Henrik > > This was discussed between Paul Leech, Dave Kristol, and > myself in Friday's > HTTP/1.1 teleconference. > > PROBLEM: When doing a PUT on a resource that already exists, > the server can > send back a 200 or a 204 response. The 204 response allows > the server to > send back an updated etag and other entity information about > the resource > that has been affected by the PUT operation. This allows the > client to do > the next PUT using the If-Match precondition to ensure that > edits are not > lost. > > There were some discussion of whether the etag is the *only* piece of > information that the client doesn't know (not included in the > request). The > feeling was that in general this can not be assumed as the > operation may > trigger server side dependencies that the server wants to > communicate back > to the client. > > When doing a PUT for *the*first*time* the resource is created > on the server > and a 201 response is sent back. The semantics of the 201 > indicates that it > can include an entity body. In section 9.5 (although this is in the > description of POST), it is stated that > > If a resource has been created on the origin server, the > response SHOULD be > 201 (Created) and contain an entity which describes the status of the > request and refers to the new resource, and a Location header > (see section > 14.30). > > Hence, the server can not send information back on a newly > created resource > using 201 as it can when updating an existing resource using 204. > > It was discussed whether anybody does include an entity in a > 201 response > as it would be a challenge for the editor to deal with the > response entity > (it would have to be displayed in a new window, for example). > > Four solutions were discussed: > > 1) When receiving a 201 response, the client can issue a HEAD > request to > get the updated information. However, the cost of this is one > additional > RTT and it may lead to race conditions if another client > comes in a does a > PUT between the first PUT and the follow-up HEAD request. > This could cause > the client to apply inconsistent metainformation to its version of the > entity body. > > 2) Introduce a new status code which has the semantics of 204 > except that > it can only be used when a resource has been created. The > problem here is > that existing editors will not understand this code and will > default to 200 > which is will not indicate that a resource has been created. > > 3) Do not allow entity bodies in a 201 response and say that all > information included in the response is about the newly > created resource. > The problem here is that we don't know if anyone already > sends back entity > bodies in a 201 response. > > 4) Change the definition of 201 to distinguish between the > case when there > is an entity body and when there isn't: > > If the response does not contain an entity-body but includes > new or updated > metainformation in the form of entity-headers, then these > header fields > SHOULD be associated with the created requested variant. If > an entity body > is present in the response then all entity header fields apply to that > entity body. > > Any 201 response can contain an etag indicating the current > value of the > entity tag for the created requested variant, see [14.19]. > > See [14.30] for use of the Location response header field in > a 201 response. > > The consensus among us, I believe, is to propose 4). > > Comments? > > Henrik > -- > Henrik Frystyk Nielsen, > World Wide Web Consortium > http://www.w3.org/People/Frystyk >
Received on Tuesday, 28 July 1998 22:57:33 UTC