COPY方法被Couchdb中的HTTP 405错误阻止

时间:2019-05-09 16:27:24

标签: http cors couchdb

我正在尝试构建一个Web应用程序(使用Dart,尽管据我所知这并不是真的适用于该问题),它可以与Couchdb服务器通信。我已经设置了CORS。

我对CORS的couchdb配置如下:

credentials: true   
headers: accept, authorization, content-type, origin, referer, if-match, x-csrf-token, cache-control, x-requested-with  
methods: GET, PUT, POST, HEAD, DELETE, COPY, OPTIONS    
origins: *

GET,PUT和POST都可以正常工作。但是,当我尝试使用COPY请求时,它失败。浏览器首先发送一个OPTIONS请求(我假设要检查COPY是否还可以)

这是我尝试发送COPY请求时浏览器正在发送的OPTIONS请求:

Host: batman:5984
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: copy
Access-Control-Request-Headers: authorization,content-type,destination
Referer: http://localhost:8080/
Origin: http://localhost:8080
Connection: keep-alive

这是我得到的回复:

HTTP/1.1 405 Method Not Allowed
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Expose-Headers: content-type, cache-control, accept-ranges, etag, server, x-couch-request-id, x-couch-update-newrev, x-couchdb-body-time
Allow: DELETE,GET,HEAD,POST,PUT,COPY
Cache-Control: must-revalidate
Content-Length: 85
Content-Type: application/json
Date: Wed, 08 May 2019 22:46:17 GMT
Server: CouchDB/2.3.0 (Erlang OTP/19)
X-Couch-Request-ID: a3a60c61b4
X-CouchDB-Body-Time: 0

然后我的复制请求就永远不会发送。我真的很困惑为什么会这样。我知道ouchdb将允许我运行复制请求,因为我已经测试过并可以通过curl成功完成,所以很好。当我发现浏览器正在发送该请求时,我将OPTIONS明确添加到了沙发数据库配置的允许方法列表中。

我认为这必须是CORS配置中的某个内容,但我完全被困在这里。

0 个答案:

没有答案