Как установить тип заголовка запроса содержимого при использовании Fetch APi

Я использую npm 'isomorphic-fetch' для отправки запросов. Проблема, которую я испытываю, заключается в том, что я не могу установить тип содержимого заголовка запроса.

Я установил тип содержимого приложения /json, однако заголовок запроса устанавливается в text/plain.

import 'isomorphic-fetch';

  sendRequest(url, method, body) {
    const options = {
      method: method,
      headers:{'content-type': 'application/json'},
      mode: 'no-cors'
    };

    options.body = JSON.stringify(body);

    return fetch(url, options);
  }

Когда я просматриваю запрос в своем браузере, тип содержимого: o:

content-type:text/plain;charset=UTF-8

Может кто-нибудь объяснить, почему я не могу установить это свойство?

Ответ 1

Я нашел ответ после прочтения следующей статьи:

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Headers

охрана

Поскольку заголовки могут быть отправлены в запросах и получены в ответах и ​​имеют различные ограничения в отношении того, какая информация может и должна быть изменчивой, объекты заголовков имеют свойство защиты. Это не распространяется на Интернет, но оно влияет на то, какие операции мутации разрешены в объекте заголовков.

Возможные значения защиты:

  •  
  • none: по умолчанию.  
  • request: защищать объект заголовков, полученный из запроса (Request.headers).  
  • request-no-cors: защищать объект заголовков, полученный из запроса, созданного с помощью Request.mode no-cors.  
  • response: защита заголовков, полученных из ответа (Response.headers).  
  • immutable: В основном используется для ServiceWorkers; делает объект заголовков доступным только для чтения.

Примечание. Вы не можете добавлять или устанавливать заголовок request защищенных заголовков Content-Length. Точно так же вставка Set-Cookie в заголовок ответа не допускается: ServiceWorkers не разрешено устанавливать файлы cookie через синтезированные ответы.

Если для свойства режима параметров установлено значение no-cors, значения заголовка запроса являются неизменяемыми.

Вместо этого я устанавливаю свойство mode в cors.

Ответ 2

Вам нужно создать объект заголовков выборки.

  sendRequest(url, method, body) {
     const options = {
     method: method,
     headers: new Headers({'content-type': 'application/json'}),
     mode: 'no-cors'
   };

  options.body = JSON.stringify(body);

  return fetch(url, options);
 }