2017-02-08 6 views
1

Я использую данные ember в своем приложении, однако, я понимаю, что данные Ember будут делать два отдельных запросов (например, GET и OPTIONS) на сервер, который, конечно, занимает больше времени, чем один запрос.Почему каждая транзакция хранилища данных Ember отправляет два запроса на сервер на сервер?

См. Снимок экрана ниже, запросы OPTIONS занимают 1 секунду для завершения и всего 2 секунды для каждой операции пользователя.

enter image description here

Фрагмент кода ниже, хотите я использовать для получения модели в одном конкретном маршруте,

model() { 
    return this.store.findAll('card'); 
}, 

Мой вопрос, почему он делает два запроса? и необходимо ли сделать запрос OPTIONS? Если нет, то как я могу остановить, позвольте мне сделать данные Ember OPTIONS?

+0

Вы можете показывает нам точный код, который вы используете, чтобы запустить запрос? Вы используете хранилище данных Ember? –

+0

Я использую хранилище данных Ember, и я обновил вопрос –

ответ

2

Это известно как preflighted request, которое существует главным образом из-за безопасности и требуется, когда dealing with CORS.

Браузер делает это автоматически, чтобы гарантировать, что выполняемый запрос доверяет серверу.

Есть два способа отключить его (или, по крайней мере, ограничить его):

  1. , установив Access-Control-Max-Age заголовок, который позволит результаты предполетного запроса в кэше и уменьшить количество запросов.

  2. Преобразуйте свой запрос в simple request, который не выдает запрошенный предполетный запрос.

Простой запрос один, который удовлетворяет всем следующим условиям:

  1. только разрешенные методы:

    • GET
    • ГОЛОВА
    • POST
  2. Только заголовки позволили установить вручную те, которые Fetch spec определяет как в CORS-safelisted request-header

Если ваш запрос использует другой метод, кроме тех, которые выше или задает нон заголовок CORS-safelisted, он будет быть предварительно запрограммирован автоматически.


Для справки, метод ВАРИАНТЫ определяется как HTTP method definitions RFC:

Способ ВАРИАНТЫ представляет собой запрос на получение информации о параметрах связи, имеющейся в цепочке запросов/ответов, идентифицированного request- URI.Этот метод позволяет клиенту определять параметры и/или требования, связанные с ресурсом, или возможности сервера, не подразумевая действия ресурса или инициирования поиска ресурсов.

Related Question

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