我正在使用quasar-framework proyect和一个名为 product 的couchdb数据库。
我尝试对某个文档发出 GET 请求,但我遇到以下错误:
错误
:8080/#/:1 XMLHttpRequest cannot load http://localhost:5984/product. Response for preflight has invalid HTTP status code 405
vue-resource.es2015.js?fc90:1085 OPTIONS http://localhost:5984/product 405 (Method Not Allowed)
Index.vue
getProyect() {
var deferred = Q.defer()
var url = "http://localhost:5984/product/product1"
Vue.http.get(url)
.then(
function (response) {
deferred.resolve(response.data)
console.log("success getting response")
},
function (error) {
var msg = 'N/A'
console.log('ERROR get:', error)
deferred.reject(msg)
}
)
return deferred.promise
}
- 通过 postman 执行相同的请求。
您可以使用curl查看cors配置:
curl -X GET admin:admin@localhost:5984/_config/cors
//Output
{"credentials":"true","origins":"*","headers":"accept, authorization, content-type, origin, referer, x-csrf-token","methods":"GET, PUT, POST, HEAD, DELETE, OPTIONS"}
我还遇到了允许couchdb
服务器上的cors并通过编辑 local.ini 来解决它的问题,但是这个人不知道如何修复它。任何帮助将不胜感激。
答案 0 :(得分:0)
我使用nginx作为couchdb的反向代理解决了这个问题。现在我的应用程序在端口80上运行。
在/etc/nginx/sites-enabled/default
我已添加:
location /couchdb {
rewrite /couchdb/(.*) /$1 break;
proxy_pass http://localhost:5984;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
现在我的 Index.vue 看起来像是:
getProyect() {
var deferred = Q.defer()
var url = "http://localhost/couchdb/product/product1" //where db = product documentID = product1
Vue.http.get(url)
.then(
function (response) {
deferred.resolve(response.data)
console.log("success getting response")
},
function (error) {
var msg = 'N/A'
console.log('ERROR get:', error)
deferred.reject(msg)
}
)
return deferred.promise
}
消息来源:https://cwiki.apache.org/confluence/display/COUCHDB/Nginx+as+a+proxy
编辑:另一种解决方案只是使用PouchDB客户端。