我正在使用npm‘isomorphic fetch’发送请求。我遇到的问题是我无法设置请求头的内容类型。
我将内容类型设置为application/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有人能解释一下为什么我不能设置这个属性吗?
发布于 2016-07-16 04:05:04
您需要创建一个fetch headers对象。
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);
}发布于 2016-07-03 02:48:22
在阅读了下面的文章后,我找到了答案:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Headers
保护由于headers可以在请求中发送和在响应中接收,并且对于哪些信息可以和应该是可变的有各种限制,headers对象有一个Guard属性。这不会向Web公开,但它会影响允许对headers对象执行哪些突变操作。
可能的保护值包括:
对从请求中获取的headers对象的
none:default.request:保护;对从请求中获取的headers对象的(Request.headers).request-no-cors:保护;对从主要用于ServiceWorkers的响应(Response.headers).immutable:中获取的Headers进行Request.mode no-cors.response:保护;将headers对象呈现为只读。注意:您不能附加或设置request防护标头的Content-Length标头。同样,不允许在响应头中插入Set-Cookie:不允许ServiceWorkers通过合成响应设置cookie。
当options模式属性设置为no-cors时,请求标头值是不可变的。
相反,我将mode属性设置为cors。
https://stackoverflow.com/questions/38156239
复制相似问题