2016-08-09 4 views
5

Следующий код (с использованием плагина PouchDB Authentication) терпит неудачу, поскольку он вызывает отправку браузером запроса предварительной проверки CORS, а CouchDB не поддерживает HTTP-метод OPTIONS.Проверка подлинности PouchDB Запрос предварительной проверки CORS

var db = new PouchDB("http://localhost:5984/mydb"); 
db.login('username', 'password'); 
// assume the database URL and login info are valid 

Это ошибка (в Chrome). Обратите внимание, что эта проблема также встречается в Edge, но не в Firefox:

XMLHttpRequest не может загрузить http://localhost:5984/_session. Ответ на предполетной имеет недопустимый HTTP код статуса 405

А вот те заголовки, которые Хром посылающие для запроса (они не существенно отличаются в Firefox):

POST /_session HTTP/1.1 
Host: localhost:8080 
Connection: keep-alive 
Content-Length: 25 
Accept: application/json 
Origin: http://localhost:8080 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 
Content-Type: application/x-www-form-urlencoded 
Referer: http://localhost:8080/ 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8,es-419;q=0.6,es;q=0.4 

Я уже включен CORS через Код сценария add-cors-to-couchdb. Вещи, я попытался:

  • Ручное добавление OPTIONS как метод под [cors] в моем local.ini
  • Passing { ajax: { content_type: "text/plain" } } в качестве третьего аргумента login

Итак, мой вопрос:

  • Как предотвратить запуск запроса предполетной защиты? Глядя на MDN documentation, это не кажется необходимым.
  • Если предыдущее невозможно, как я могу настроить мой сервер CouchDB на ответ на предполетные запросы?

ответ

2

Удар этой же проблемы. Кажется, Chrome недавно начал немного более агрессивно относиться к отправке предварительного предлога OPTIONS. Частичная работа вокруг было указано конкретное происхождение в заголовке CORS вместо «*», так

curl -X PUT $HOST/_config/cors/origins -d '"localhost:8080"' 

или аналогичный.

Я до сих пор получаю ошибку перед полетом, но теперь PouchDB успешно аутентифицируется, поэтому я могу просто проигнорировать ошибку. Я думаю, что исправление заключается в том, чтобы заставить CouchDB отвечать OPTIONS на URL-адрес _session.

Редактировать, подробнее здесь https://github.com/nolanlawson/pouchdb-authentication/issues/111

+0

Спасибо за предложение. К сожалению, когда я попытался указать источник, как вы описали, результат был таким же, как и раньше (такая же ошибка, без проверки подлинности). Также спасибо за ссылку, информация очень полезна! – rvighne

 Смежные вопросы

  • Нет связанных вопросов^_^