Следующий код (с использованием плагина 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 на ответ на предполетные запросы?
Спасибо за предложение. К сожалению, когда я попытался указать источник, как вы описали, результат был таким же, как и раньше (такая же ошибка, без проверки подлинности). Также спасибо за ссылку, информация очень полезна! – rvighne