20

我正在尝试创建一个 html 文件,它将数据从 pouchDb 同步到 couchDb ..但是我在 chrome 控制台中收到以下错误。

未捕获的 TypeError:无法调用 null 的方法“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”标头。因此不允许访问源“ 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。但这并没有解决问题。我在这里看到了很多类似的问题。但我不明白任何答案,因为我在这个领域相对较新

4

9 回答 9

44

从此文档

要启用 CORS 支持,您需要在 的部分中设置enable_cors = true选项,并添加包含设置的部分。请注意,默认情况下,不接受任何来源;您必须使用通配符或白名单。[httpd]local.ini[cors]origins = *

[httpd]
enable_cors = true

[cors]
origins = *
于 2014-01-03T12:37:12.553 回答
9

接受的答案不能解决我的问题。我所做的是——

更新 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 用户

于 2016-03-18T16:32:49.757 回答
3

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

于 2015-02-17T10:12:02.663 回答
3

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

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

更多文档在这里:https ://github.com/pouchdb/add-cors-to-couchdb

于 2016-03-18T18:40:33.920 回答
3

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

npm install -g add-cors-to-couchdb

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

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

查看以下链接以了解 CouchDB 如何使用 CORS 参考

于 2016-11-03T06:47:54.003 回答
0

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

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 依赖项

于 2015-02-01T17:54:57.740 回答
0

对于 Windows 用户,进入 apache 安装文件夹(C:\Program Files (x86)\Apache Software Foundation\CouchDB\etc\couchdb) <-- was here for me ,并使用以下详细信息更新 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 服务以确保完整性:)

于 2016-03-03T17:07:34.903 回答
0

必须穿上OPTIONSmethods属性。

[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'}))
于 2020-04-20T16:45:16.813 回答
0

CouchDB UI 可以通过http://localhost:5984/_utils(或 CouchDB 运行的任何 URL 后跟 /_utils)访问。在其中,您可以转到配置 > CORS 并启用或禁用 CORS。

在此处输入图像描述

于 2021-05-10T15:03:54.157 回答