Javascript 如何在couchDB中添加cor--No';访问控制允许原点';请求的资源上存在标头
我试图创建一个html文件,将数据从PockDB同步到couchDb。但是我在chrome控制台中遇到了以下错误 未捕获的TypeError:无法调用null的方法“addEventListener” 选项405(方法不适用) 允许的) 选项上不存在“访问控制允许原点”标题 请求的资源。因此,不允许访问源“”。 无法加载XMLHttpRequest。没有“访问控制允许来源” 请求的资源上存在标头。来源“ 因此不允许访问。 选项无“访问控制允许原点”标题 请求的资源上存在。来源“ 因此不允许访问。每晚一次。js:3496 选项不存在“访问控制允许原点”标题 在请求的资源上。来源“ 因此不允许访问。每晚一次。js:3496 无法加载XMLHttpRequest。不 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 进入 我找到了避免这个问题的方法。也就是说,我必须使用以下命令打开chrome:cd C:\Program Files(x86)\Google\chrome\Application chrome.exe--disable-web-security。但这并没有解决问题。 我在这里看到了很多类似的问题。但我不明白任何答案,因为我在这个领域相对较新来自: 要启用CORS支持,您需要设置Javascript 如何在couchDB中添加cor--No';访问控制允许原点';请求的资源上存在标头,javascript,html,cors,couchdb,pouchdb,Javascript,Html,Cors,Couchdb,Pouchdb,我试图创建一个html文件,将数据从PockDB同步到couchDb。但是我在chrome控制台中遇到了以下错误 未捕获的TypeError:无法调用null的方法“addEventListener” 选项405(方法不适用) 允许的) 选项上不存在“访问控制允许原点”标题 请求的资源。因此,不允许访问源“”。 无法加载XMLHttpRequest。没有“访问控制允许来源” 请求的资源上存在标头。来源“ 因此不允许访问。 选项无“访问控制允许原点”标题 请求的资源上存在。来源“ 因此不允许访问。
enable\u CORS=true
选项
在local.ini
的[httpd]
部分中,添加[cors]
部分
包含origins=*
设置。请注意,默认情况下,不支持任何原点
认可的;必须使用通配符或白名单
[httpd]
enable_cors = true
[cors]
origins = *
根据@szydan注释,如果您的包管理器仍然为您提供不支持CORS选项的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/
您可能需要在couchdb中安装SpiderMonkey和jsapi依赖项CORS部分:
credentials: true
headers: accept, authorization, content-type, origin, referer, cache-control, x-requested-with
methods: GET,PUT,POST,HEAD,DELETE
origins: *
注意
x-request-with
对于windows用户,进入apache安装文件夹(C:\Program Files(x86)\apache Software Foundation\CouchDB\etc\CouchDB)接受的答案不能解决我的问题。我所做的是-
更新local.ini(/installation location/CouchDB/etc/CouchDB)
然后在管理员模式下打开CMD并运行-
net.exe stop "Apache CouchDB" && net.exe start "Apache CouchDB"
***仅适用于windows用户现在有一个工具可以为您将CORS添加到CouchDB:
npm install -g add-cors-to-couchdb
add-cors-to-couchdb
此处有更多文档:我发现的最简单的方法是安装以下组件:
npm install -g add-cors-to-couchdb
然后从命令行运行工具,即“将cors添加到couchdb”,如下所示:
add-cors-to-couchdb <you_url>:<port> -u <user_name> -p <your_password>
将cors添加到couchdb:-u-p
必须在“方法”属性上放置
选项
[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版本):
可以在上访问CouchDB UI(或运行CouchDB的任何URL,后跟/_utils)。在里面,您可以进入Configuration>CORS并启用或禁用CORS
您遇到了我们称之为的问题。默认情况下,浏览器将不允许您向与承载页面的服务器不具有相同协议和端口的服务器发出ajax请求。在链接的文章中有很多好的信息。谢谢……但是链接没有任何包含标题的代码。你不能在客户端JavaScript或html文件中设置标题。这是关于服务器响应中的头。你能给出一个解决方案吗…我使用html、js和synching PockDB和Coach db,你可以通过响应设置头。addheader(“,”*”);在客户端谢谢@robertc。。。你能解释一下“通配符或白名单”吗。。。我是这个领域的新手我在local.ini中添加了cors。。。但获取以下错误…->加载资源失败:凭据标志为“true”,但“访问控制允许凭据”标题为“”。我获取了它………谢谢@robertc..我在local.ini中添加了以下行…[cors]origins=*Credentials=true methods=get、PUT、POST、HEAD、DELETE headers=accept、authorization、content type、,通过软件包管理器在debian/ubuntu上安装couchdb的原始通知。截至今天(2014年10月10日),您将获得的版本为1.2,不支持CORS选项。如果您想使用它们,您必须从源代码处安装never版本。我花了一点时间才意识到为什么我的CORS设置不起作用,原因是我通过apt get install couchdb安装了它,它是1.2版。@szydan在Ubuntu上你可以使用下面的PPA安装1.6.1版,它支持CORS。或者您可以使用web界面进行此操作,例如,对于linux用户,在更新local.ini后,通过运行命令:sudo service CouchDB restart重新启动CouchDB服务
add-cors-to-couchdb <you_url>:<port> -u <user_name> -p <your_password>
[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
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'}))