CouchDB重写规则更新处理程序结果不允许使用405方法

时间:2016-08-17 12:10:15

标签: curl couchdb

我有一个奇怪的问题。为了隐藏我的请求URL的大部分内容,我正在使用CouchDB中的视图,列表和更新功能的重写规则。尽管更新功能的URL很短,但一切正常。如果没有短URL,我可以毫无问题地调用更新功能,但如果我使用短URL,则不允许使用405方法。

使用短网址

curl -iX POST -g'https://[user]:[pw]@[domain]/db_short/update_fields/IndicationSet_1750'-d'{“Comment”:“Wwow”}'-H'Content-Type:application / json'-H'Eccept:application / json'< / p>

HTTP/1.1 405 Method Not Allowed                                                                                                                                                                                                                                            
Server: nginx/1.9.15                                                                                                                                                                                                                                                       
Date: Wed, 17 Aug 2016 11:57:57 GMT                                                                                                                                                                                                                                        
Content-Type: application/json                                                                                                                                                                                                                                             
Content-Length: 75                                                                                                                                                                                                                                                         
Connection: keep-alive                                                                                                                                                                                                                                                     
Cache-Control: must-revalidate                                                                                                                                                                                                                                             
Allow: DELETE,GET,HEAD,PUT

没有短网址

curl -iX POST -g'https://[user]:[pw]@[domain]/futon/kunde_a/_design/update_indicationset_nuel/_update/update_fields/IndicationSet_1750'-d'{“Comment”:“Wwowwwww”}' - H'内容类型:application / json'

HTTP/1.1 201 Created
Server: nginx/1.9.15
Date: Wed, 17 Aug 2016 12:03:47 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 7
Connection: keep-alive
X-Couch-Update-NewRev: 18-6d5bba9e51bf4d28b672776c4bce11d1
X-Couch-Id: IndicationSet_1750
Strict-Transport-Security: max-age=31536000

在我的配置中,我启用了具有所有必要设置的角色

CORS
凭证:真实的 标题:接受,授权,内容类型,来源,引用,x-csrf-token
方法:GET,PUT,POST,HEAD,DELETE
起源:*

的httpd
enable_cors:true

2 个答案:

答案 0 :(得分:1)

&#34;短网址&#34;是不正确的。正如documentation所说,重写网址的模式是:

  

ANY / {db} / _ design / {ddoc} / _ rewrite / {path}

在您的情况下,此网址应该有效:

https://[user]:[pw]@[domain]/db_short/_design/update_indicationset_nuel/_rewrite/update_fields/IndicationSet_1750

答案 1 :(得分:0)

经过一番挖掘,我发现了问题。我忘了在更新函数的重写规则中添加一个通配符来处理查询路径末尾的文档ID。

旧版本:

{
       "from": "/update_fields/",
       "to": "/../update_indicationset_nuel/_update/update_fields/",
       "method": "*"
   }

新版本:

{
       "from": "/update_fields/*",
       "to": "/../update_indicationset_nuel/_update/update_fields/*",
       "method": "*"
   }