как добавить cors в couchDB-нет заголовка "Access-Control-Allow-Origin" на запрошенном ресурсе
Я пытаюсь создать html-файл, который синхронизирует данные из pouchDb в couchDb ..но я получаю следующую ошибку в консоли chrome.
Uncaught TypeError: не удается вызвать метод 'addEventListener' из null
опции http://localhost:5984/todos/ 405 (Метод Не Разрешено)
опции http://localhost:5984/todos/ заголовок "Access-Control-Allow-Origin" отсутствует требования заказчика ресурс. Происхождение'http://localhost:8080 ' поэтому доступ запрещен. XMLHttpRequest не удается загрузить http://localhost:5984/todos/. Нет "Доступ-Контроль-Разрешить-Происхождение" заголовок присутствует на запрашиваемый ресурс. Происхождение'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 файлы (x86)GoogleChromeприложения Chrome.exe --disable-web-security.Но это не решило проблему. Я видел много подобных вопросов здесь.но я не понял никакого ответа, так как я относительно новичок в этой области
7 ответов
С документация:
чтобы включить поддержку CORS, необходимо установить в на
local.ini
и добавить содержащийorigins = *
настройка. Обратите внимание, что по умолчанию исходные данные отсутствуют принято; вы должны использовать подстановочный знак или белый список.[httpd] enable_cors = true [cors] origins = *
принятый ответ не решает мою проблему. Что я сделал, так это ... --3-->
обновление локального.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
раздел CORS в couchdb:
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
дополнительная документация здесь:https://github.com/pouchdb/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>
в комментарии @szydan, если ваш менеджер пакетов по-прежнему служит вам 1.2 версии, которая не поддерживает параметры CORS, вам нужно установить его из источника.
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)
[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 для полноты:)