пользовательские заголовки не добавляются в объект запроса

Я пытаюсь использовать fetch API.

Сначала я создаю объект new Headers():

var oHeaders = new Headers({
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    "X-DocuSign-Authentication": '{"Username":"xxx","Password":"xxx","IntegratorKey":"xxx"}'
})

После создания заголовков, если я попытаюсь зарегистрировать заголовки, все будет правильно.

oHeaders.forEach(function(v){console.log(v)})
//logs: 2 application/json {"Username":"xxx","Password":"xxx","IntegratorKey":"xxx"}

я создаю объект запроса:

var oReq = new Request('https://eu.docusign.net/restapi/v2/login_information', {
  method: 'GET',
  headers: oHeaders,
  mode: 'no-cors',
});

Если я попытаюсь зарегистрировать заголовки объекта запроса, там будет только заголовок accept.

oReq.headers.forEach(function(v){console.log(v)})
//logs: application/json

Если я попытаюсь fetch(oReq), я получу ответ 401 unauthorized.

Что заставляет заголовки исчезать?


person lacexd    schedule 28.02.2017    source источник
comment
Итак, вы тестируете это в сценарии, который также работает под https://eu.docusign.net/? А если нет, то зачем устанавливать mode: 'no-cors'?   -  person CBroe    schedule 28.02.2017
comment
я должен использовать no-cors, потому что Access-Control-Allow-Origin. Запрос должен быть сделан с клиентской стороны другого сервера. Я пытался проверить заголовки даже без no-cors, и заголовки все еще исчезают.   -  person lacexd    schedule 28.02.2017
comment
Это бессмысленно. Поскольку вы делаете запрос к другому домену, для него необходимо включить CORS.   -  person CBroe    schedule 28.02.2017


Ответы (1)


Когда вы устанавливаете mode: 'no-cors'для запроса, браузеры не позволят вам устанавливать какие-либо заголовки запроса, кроме заголовки запросов CORS-безопасного списка. См. требования спецификации:

Чтобы добавить пару имя/значение (имя/значение) к объекту Headers (заголовки), выполните следующие действия:

  1. В противном случае, если guard имеет значение "request-no-cors" и имя/значение не является заголовок запроса CORS-safelist, возврат.

В этом алгоритме return соответствует «возврату без добавления этого заголовка к объекту Headers».

person sideshowbarker    schedule 28.02.2017