You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@couchdb.apache.org by "Samuel Tardieu (JIRA)" <ji...@apache.org> on 2015/04/25 23:55:38 UTC

[jira] [Created] (COUCHDB-2673) "Location" header in HTTP response should properly encode the document _id

Samuel Tardieu created COUCHDB-2673:
---------------------------------------

             Summary: "Location" header in HTTP response should properly encode the document _id
                 Key: COUCHDB-2673
                 URL: https://issues.apache.org/jira/browse/COUCHDB-2673
             Project: CouchDB
          Issue Type: Bug
      Security Level: public (Regular issues)
          Components: Database Core
            Reporter: Samuel Tardieu


When inserting a document in a CouchDB 1.6.1 database, the response sent by CouchDB contains a "Location" HTTP header with the URI of the newly created document.

However, if the "_id" of the new document contains non-ASCII characters, this "Location" header is not properly encoded.

Example:

{code}
 % curl -v -H "Content-Type: application/json" -X POST http://localhost:5984/test/ --data '{"_id": "xxxé"}'
*   Trying ::1...
* Connected to localhost (::1) port 5984 (#0)
> POST /test/ HTTP/1.1
> Host: localhost:5984
> User-Agent: curl/7.42.0
> Accept: */*
> Content-Type: application/json
> Content-Length: 16
> 
* upload completely sent off: 16 out of 16 bytes
< HTTP/1.1 201 Created
< Server: CouchDB/1.6.1 (Erlang OTP/17)
< Location: http://localhost:5984/test/xxxé
< ETag: "1-967a00dff5e02add41819138abb3284d"
< Date: Sat, 25 Apr 2015 21:33:04 GMT
< Content-Type: text/plain; charset=utf-8
< Content-Length: 68
< Cache-Control: must-revalidate
< 
{"ok":true,"id":"xxxé","rev":"1-967a00dff5e02add41819138abb3284d"}
{code}

According to RFC 2616 ("HTTP headers only contain ASCII") and RFC 2396 ("here is how to construct an URI from ASCII characters"), the "Location" header should be formatted as:

{code}
Location: http://localhost:5984/test/xxx%C3%A9
{code}

The "spray.io" framework warns against this invalid response when doing such a request towards a CouchDB database.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)