如何在couchDB中添加cors--请求的资源上不存在“Access-Control-Allow-Origin”标头

kr98yfug  于 2022-12-09  发布在  CouchDB
关注(0)|答案(9)|浏览(225)

我试图创建一个html文件,同步从pouchDb到couchDb的数据..但我在chrome控制台中收到以下错误。
未捕获的类型错误:无法调用空值的'addEventListener'方法
选项http://localhost:5984/todos/ 405(不允许的方法)
选项http://localhost:5984/todos/请求的资源上不存在'Access-Control-Allow-Origin'标头。因此不允许访问源'http://localhost:8080'。XMLHttpRequest无法加载http://localhost:5984/todos/。请求的资源上不存在'Access-Control-Allow-Origin'标头。因此不允许访问源'http://localhost:8080'。选项http://localhost:5984/todos/不存在'Access-Control-Allow-Origin'请求的资源上存在“Access-Control-Allow-Origin”标头。因此不允许访问源“http://localhost:8080”。pouchdb-nightly.js:3496选项http://localhost:5984/todos/请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“http://localhost:8080”。pouchdb-nightly.js:3496 XMLHttpRequest无法加载http://localhost:5984/todos/。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“http://localhost:8080”。
我找到了一个方法来避免这个问题。那就是我必须使用下面的命令打开chrome:cd C:\Program Files(x86)\Google\Chrome\Application Chrome.exe --disable-web-security。但这并没有解决问题。我在这里看到了很多类似的问题。但我不明白任何答案,因为我在这个领域相对较新

46qrfjad

46qrfjad1#

this documentation开始:
要启用CORS支持,需要在local.ini[httpd]段中设置enable_cors = true选项,并添加包含origins = *设置的[cors]段,注意默认不接受原点;您必须使用通配符或白名单。

[httpd]
enable_cors = true

[cors]
origins = *
xvw2m8pv

xvw2m8pv2#

可接受的答案并不能解决我的问题。我所做的是-
更新local.ini(/安装位置/CouchDB/etc/couchdb)

[httpd]
enable_cors = true

[cors]
origins = *
credentials = true
methods = GET, PUT, POST, HEAD, DELETE
headers = accept, authorization, content-type, origin, referer, x-csrf-token

然后以管理员模式打开CMD并运行-

net.exe stop "Apache CouchDB" && net.exe start "Apache CouchDB"

***仅适用于Windows用户

tez616oj

tez616oj3#

couchdb中的CORS部分:

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

通知x-requested-with

2sbarzqh

2sbarzqh4#

现在有一个工具可以为您将CORS添加到CouchDB:

npm install -g add-cors-to-couchdb
add-cors-to-couchdb

更多文档,请访问:https://github.com/pouchdb/add-cors-to-couchdb

iih3973s

iih3973s5#

最简单的方法我发现是安装以下:

npm install -g add-cors-to-couchdb

然后从命令行运行工具,即“add-cors-to-couchdb”,如下所示:

add-cors-to-couchdb <you_url>:<port> -u <user_name> -p <your_password>

Check out the following link for CouchDB how to CORS reference

rks48beu

rks48beu6#

根据@szydan的评论,如果你的软件包管理器仍然为你提供1.2版本,它不支持CORS OPTIONS,你需要从源代码安装它。

echo "deb http://binaries.erlang-solutions.com/debian `lsb_release -cs` contrib"  | tee /etc/apt/sources.list.d/erlang-solutions.list
wget -O - http://binaries.erlang-solutions.com/debian/erlang_solutions.asc |  apt-key add -
echo "deb http://packages.cloudant.com/debian `lsb_release -cs` main" | tee /etc/apt/sources.list.d/cloudant.list
wget http://packages.cloudant.com/KEYS -O - |  apt-key add -
apt-get update -y
apt-get install -y erlang-nox erlang-dev
apt-get install -y build-essential
apt-get install -y erlang-nox
apt-get install -y libmozjs185-cloudant libmozjs185-cloudant-dev
apt-get install -y libnspr4 libnspr4-0d libnspr4-dev libcurl4-openssl-dev curl libicu-dev

useradd -d /var/lib/couchdb couchdb
mkdir -p /usr/local/{lib,etc}/couchdb /usr/local/var/{lib,log,run}/couchdb /var/lib/couchdb
chown -R couchdb:couchdb /usr/local/{lib,etc}/couchdb /usr/local/var/{lib,log,run}/couchdb
chmod -R g+rw /usr/local/{lib,etc}/couchdb /usr/local/var/{lib,log,run}/couchdb

http://www.apache.org/dyn/closer.cgi?path=/couchdb/source/

tar xzf apache-couchdb-*.tar.gz
cd apache-couchdb-*
./configure --prefix=/usr/local --with-js-lib=/usr/lib --with-js-include=/usr/include/mozjs --enable-init
make && sudo make install

sudo ln -s /usr/local/etc/init.d/couchdb /etc/init.d/couchdb
sudo /etc/init.d/couchdb start
sudo update-rc.d couchdb defaults

#check if it runs
curl http://127.0.0.1:5984/

您可能需要安装SpiderMonkey和jsapi依赖项

piv4azn7

piv4azn77#

对于Windows用户,进入Apache安装文件夹(C:\Program Files(x86)\Apache Software Foundation\CouchDB\etc\couchdb)〈--是为我在这里,并更新local.ini文件与以下详细信息...工作对我来说很有魅力,谢谢大家

[cors]
 credentials: true
 headers: accept, authorization, content-type, origin, referer, cache-control,          x-requested-with
 methods: GET,PUT,POST,HEAD,DELETE
 origins: *

 [httpd]
 enable_cors = true

显然,为了完整性,重新启动apache couchdb服务:)

unhi4e5o

unhi4e5o8#

必须在方法属性上放置OPTIONS

[cors]
 credentials: true
 headers: accept, authorization, content-type, origin, referer, cache-control,          x-requested-with
 methods: GET,PUT,POST,HEAD,DELETE,OPTIONS
 origins: *

[httpd]
 enable_cors = true

即使你在运行中引导你数据库(nodejs/nano版本):

nano.request({db: '_node', path: '/nonode@nohost/_config/couch_peruser/enable', method: 'PUT', body: 'true'})
      .then(() => nano.request({db: '_node', path: '/nonode@nohost/_config/httpd/enable_cors', method: 'PUT', body: 'true'}))
      .then(() => nano.request({db: '_node', path: '/nonode@nohost/_config/cors/origins', method: 'PUT', body: '*'}))
      .then(() => nano.request({db: '_node', path: '/nonode@nohost/_config/cors/credentials', method: 'PUT', body: 'true'}))
      .then(() => nano.request({db: '_node', path: '/nonode@nohost/_config/cors/headers', method: 'PUT', body: 'accept, authorization, content-type, origin, referer'}))
      .then(() => nano.request({db: '_node', path: '/nonode@nohost/_config/cors/methods', method: 'PUT', body: 'GET, PUT, POST, HEAD, DELETE, OPTIONS'}))
fslejnso

fslejnso9#

CouchDB UI可以在http://localhost:5984/_utils上访问(或者任何你的CouchDB运行的URL,后面跟着/_utils)。在里面,你可以转到Configuration〉CORS并启用或禁用CORS。

相关问题