2016-03-17 5 views
0

Я пытаюсь whatwg-fetch (polyfill for Fetch API), а при выполнении POST выполняется предполетная проверка. Но поскольку учетные данные не отправляются, когда OPTIONS отправляется службе REST, я получаю «неавторизованный» ответ.whatwg-fetch why is not credentials included while in preflight (ОПЦИИ)

return fetch('http://localhost:8080/activity', { 
    credentials: 'include', 
    method: 'POST', 
    mode: 'cors', 
    body: JSON.stringify(activity), 
    headers: new Headers({ 'Content-Type': 'application/json' }) 
}); 
+0

Если вы управляете сервером, вам необходимо настроить сервер, чтобы он не требовал аутентификации для запросов «OPTIONS» (нет причин, по которым сервер должен требовать аутентификации для них, в отличие от запросов GET или POST. Но если вы не контролируете сервер, браузеру не удастся сделать какие-либо запросы с кросс-началом должным образом, для чего требуется предварительный просмотр CORS. – sideshowbarker

+0

Прошу прощения, но зачем присылать api запрос OPTIONS? –

ответ

1

Возьмите мое дело в качестве ответа. Я считаю, что это поможет вам:

export function doSearchRequest (filters) { 
    let token = $('meta[name="csrf-token"]').attr('content'); 
    return (fetch('/services/search/message', { 
      method: "POST", 
      headers: { 
       'Accept': 'application/json', 
       'Content-Type': 'application/json', 
       'Cache': 'no-cache', 
       '_token' : token, 
       'X-CSRF-Token' : token, 
       'X-XSRF-TOKEN' : token 
      }, 
      credentials: 'include', 
      body: JSON.stringify(filters) 
     }) 
     .then(response => response.json()) 
     .then(function(json) { 
      return json; 
     }) 
    );  
}