如何使用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); }