我正在尝试创建一个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.But这并没有解决问题。我在这里看到了很多类似的问题。但我不明白任何答案,因为我在这个领域相对较新
要启用CORS支持,您需要在
enable_cors = true
的[httpd]
部分设置local.ini
选项,并添加包含[cors]
设置的origins = *
部分。请注意,默认情况下,不接受任何来源;你必须使用通配符或白名单。[httpd] enable_cors = true [cors] origins = *
接受的答案并不能解决我的问题。我做的是 -
更新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用户
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
现在有一个工具可以为您添加CORS到CouchDB:
npm install -g add-cors-to-couchdb
add-cors-to-couchdb
我发现最简单的方法是安装以下内容:
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
根据@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依赖项
对于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服务以获得完整性:)