我有一个奇怪的问题。为了隐藏我的请求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
答案 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": "*"
}