2016-04-08 2 views
0

Я пытаюсь сделать основной запрос на рабочий сервер (проверенный через Google POSTMAN) в приложении emberJS. Но когда я пытаюсь, я получаю ошибку http 404. Затем я проверил ошибку и увидел, что исходный запрос, который поступает с клиентской стороны, стал запросом OPTION вместо запроса GET. Кроме того, я установил два заголовок, Accept и Content-Type быть application/json и при проверке инспектора отпечатанного эти заголовки:emberJS JSONAPI адаптер отправляет OPTION вместо запроса GET

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Access-Control-Request-Headers:accept, content-type 
Access-Control-Request-Method:GET 
Connection:keep-alive 
Host:frontend.com 
Origin:http://localhost:4200 
Referer:http://localhost:4200/restaurant 
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 

Теперь вот адаптер

//Application.js adapter: 
import DS from 'ember-data'; 

export default DS.JSONAPIadapter.extend({ 
    host: 'http://server.com', 
    namespace: 'v1', 
    headers: { 
     "Accept": "application/json", 
     "Content-Type": "application/json" 
    } 
}); 

Есть ли какой-нибудь способ, чтобы превратить это ВАРИАНТ выключен, или есть ли какое-то обходное решение? Я не считал, что ember был настолько глючным, потому что это должно быть одной из главных вещей, которые должен сделать emberJS - отправлять запросы. Любая помощь может быть исправлена.

+0

Ваш комментарий означает, что вы считаете, что Ember глючит? Вы знакомы с тем, как работают междоменные запросы? (Предположим, что ваш клиентский код и свойство «хозяин» - разные хосты) –

+1

Возможно, вам захочется узнать об этой теме (BTW, это не имеет никакого отношения к Ember, это способ работы браузеров): https: //developer.mozilla .org/en-US/docs/Web/HTTP/Access_control_CORS –

+1

Я был слишком стрессован вчера из-за этой проблемы, поэтому я подумал, что ember был глючит. Я вообще не был знаком с CORS. Теперь я попытаюсь разрешить CORS на заднем конце, чтобы исправить проблему. Спасибо :) – xpg94

ответ

1

Это запрос "предполетный". Выполняя запрос на перекрестный поиск, браузер сначала отправляет запрос предварительной проверки, отправляя запрос OPTION. Если запрос OPTION будет успешно выполнен, реальный запрос будет отправлен на сервер.

"предполетный" не может в таких случаях:

  • CORS не включен на сервере проблемы
  • аутентификации/авторизации произошедшей
  • функции
  • сервиса не найдено (404)
  • службы функция не принимает заголовок, который вы отправите

Вы можете искать по этим ключевым словам: preflight, cors

+0

Или, возможно, сервер не поддерживает запрос OPTIONS. Кто-нибудь получил какие-либо знания об отключении запроса предполетной защиты в данных ember? WP-REST-API, похоже, не поддерживает его (невероятно) – Epirocks

+0

Вы не можете отключить его. Это делается браузером. – ykaragol

+0

Фактически вы можете остановить браузер, выполнив его, установив тип содержимого в текстовое/обычное поле в вашем адаптере данных Ember. Это только для развития, поэтому я не вижу смысла в поддержке OPTIONS. – Epirocks

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