如何使用Fetch APi设置请求头的内容types

我使用npm'isomorphic-fetch'发送请求。 我遇到的问题是我无法设置请求标头的内容types。

我设置了application / json的内容types,但是请求头被设置为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); } 

当我在浏览器中检查请求时,内容types是o:

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

任何人都可以解释为什么我无法设置此属性?

在阅读以下文章后,我find了答案:

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

守卫

由于标题可以在请求中发送,并在响应中收到,并且对于哪些信息可以并且应该是可变的有各种限制,标题对象具有警戒属性。 这不会暴露给Web,但会影响标头对象上允许使用的变异操作。

可能的防护值是:

  • none :默认。
  • request :从请求( Request.headers )中获取头对象的守护。
  • request-no-cors :从使用Request.mode no-cors创build的请求中获取的标头对象no-cors
  • response :从一个响应( Response.headers )获得一个Headers的警戒。
  • immutable :主要用于ServiceWorkers; 呈现只读标头对象。

注意 :您不能附加或设置保护Headers的Content-Length标题的request 。 同样,不允许将Set-Cookie插入到响应头中:ServiceWorkers不允许通过合成响应来设置Cookie。

当选项模式属性设置为no-cors时,请求标头值是不可变的。

相反,我将mode属性设置为cors。

您需要创build一个读取头对象。

  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); }