我使用NPM“同构取”发送请求。我遇到的问题是我无法设置内容类型的请求头。
我设置应用/ JSON的内容类型,但是请求头被设置为文本/无格式。
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
任何人都可以解释为什么我不能设置该属性?
我找到了答案,阅读下面的文章后:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Headers
Guard由于头可以在请求中发送和收到的答复,并有各种限制哪些信息可以而且应该是可变的,标题对象有保护财产。这不暴露于网络,但它会影响其变异操作被允许在标题对象。
可能的警戒值是:
none
:默认。request
:防护件,用于从请求(Request.headers
)得到的标题对象。request-no-cors
:防护件用于从与Request.mode
no-cors
创建的请求而获得的标头的对象。response
:防护件,用于从响应(Response.headers
)而获得的集管。immutable
:大多用于ServiceWorkers;呈现一个标题对象设置为只读。注意:您可能不会追加或设置
request
把守头Content-Length
头。类似地,插入Set-Cookie
成响应头是不允许的:ServiceWorkers不允许经由合成响应设置cookie。
当选项模式属性被设置为无CORS请求头的值是不可变的。
相反,我将模式设置属性CORS。
您需要创建一个读取头对象。
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);
}