Will Holley created COUCHDB-2674: ------------------------------------ Summary: Inconsistent handling of URL encoded design doc name between clustered and non-clustered interfaces Key: COUCHDB-2674 URL: https://issues.apache.org/jira/browse/COUCHDB-2674 Project: CouchDB Issue Type: Bug Security Level: public (Regular issues) Components: Database Core Reporter: Will Holley
In CouchDB 1.6 (and non-clustered 2.X), a request to GET a design document where the full design document name is URL encoded results in a 301 redirect: {code} $ curl -v http://127.0.0.1:15986/test/_design%2Ffoo > GET /test/_design%2Ffoo HTTP/1.1 > User-Agent: curl/7.37.1 > Host: 127.0.0.1:15986 > Accept: */* > < HTTP/1.1 301 Moved Permanently * Server CouchDB/44fe5b6 (Erlang OTP/17) is not blacklisted < Server: CouchDB/44fe5b6 (Erlang OTP/17) < Location: http://127.0.0.1:15986/test/_design/foo < Date: Sun, 26 Apr 2015 18:18:30 GMT < Content-Length: 0 < * Connection #0 to host 127.0.0.1 left intact {code} However, the same request through the clustered interface is handled directly: {code} $ curl -v http://127.0.0.1:15984/test/_design%2Ffoo > GET /test/_design%2Ffoo HTTP/1.1 > User-Agent: curl/7.37.1 > Host: 127.0.0.1:15984 > Accept: */* > < HTTP/1.1 200 OK < X-CouchDB-Body-Time: 0 < X-Couch-Request-ID: f9a8af50 * Server CouchDB/44fe5b6 (Erlang OTP/17) is not blacklisted < Server: CouchDB/44fe5b6 (Erlang OTP/17) < Etag: "1-670d087e023b4320c148c8e73ba82129" < Date: Sun, 26 Apr 2015 18:16:51 GMT < Content-Type: text/plain; charset=utf-8 < Content-Length: 160 < Cache-Control: must-revalidate < {"_id":"_design/foo","_rev":"1-670d087e023b4320c148c8e73ba82129","views":{"newView":{"map":"function(doc) {\n emit(doc._id, 1);\n}"}},"language":"javascript"} * Connection #0 to host 127.0.0.1 left intact {code} I think the behaviour in the clustered interface is preferable but we should be consistent. The difference seems to be at https://github.com/apache/couchdb-chttpd/blob/ab80f3131e244af967e2d162925ee45008d54a50/src/chttpd_db.erl#L512. This came to light due to the .NET HTTP client not sending authentication headers when following the redirect (see https://github.com/danielwertheim/mycouch/issues/75). -- This message was sent by Atlassian JIRA (v6.3.4#6332)