edit 2018-09-13 : добавлены некоторые уточнения относительно этого запроса перед полетом и как его избежать в конце этого ответа.
OPTIONS
запросы - это то, что мы называем pre-flight
запросами Cross-origin resource sharing (CORS)
.
Они необходимы, когда вы делаете запросы из разных источников в определенных ситуациях.
Этот предполетный запрос сделан некоторыми браузерами как мера безопасности, чтобы гарантировать, что выполняемый запрос является доверенным сервером. Это означает, что сервер понимает, что метод, источник и заголовки, отправляемые по запросу, безопасны для действий.
Ваш сервер не должен игнорировать, а обрабатывать эти запросы всякий раз, когда вы пытаетесь выполнить запросы из разных источников.
Хороший ресурс можно найти здесь http://enable-cors.org/
Чтобы справиться с этим, чтобы убедиться, что для любого пути с OPTIONS
методом сервер отправляет ответ с этим заголовком
Access-Control-Allow-Origin: *
Это скажет браузеру, что сервер готов отвечать на запросы любого происхождения.
Для получения дополнительной информации о том, как добавить поддержку CORS на ваш сервер, смотрите следующую блок-схему
http://www.html5rocks.com/static/images/cors_server_flowchart.png
редактировать 2018-09-13
OPTIONS
Запрос CORS запускается только в некоторых случаях, как описано в документах MDN :
Некоторые запросы не запускают предварительную проверку CORS. В этой статье они называются «простыми запросами», хотя в спецификации Fetch (которая определяет CORS) этот термин не используется. Запрос, который не запускает предварительную проверку CORS - так называемый «простой запрос» - это запрос, который удовлетворяет всем следующим условиям:
Единственные допустимые методы:
Помимо заголовков, автоматически устанавливаемых пользовательским агентом (например, Connection, User-Agent или любым другим заголовком с именами, определенными в спецификации Fetch как «имя запрещенного заголовка»), единственными заголовками, которым разрешено быть вручную устанавливаются те, которые спецификация Fetch определяет как «заголовок запроса CORS-safelisted», а именно:
- принимать
- Accept-Language
- Content-Language
- Content-Type (но обратите внимание на дополнительные требования ниже)
- DPR
- Downlink
- Сохранить данные
- ВЭкран-Ширина
- ширина
Единственные допустимые значения для заголовка Content-Type:
- применение / х-WWW-форм-urlencoded
- многочастному / форм-данных,
- текст / обычный
Ни один прослушиватель событий не зарегистрирован ни в одном объекте XMLHttpRequestUpload, используемом в запросе; доступ к ним осуществляется с помощью свойства XMLHttpRequest.upload.
В запросе не используется объект ReadableStream.