前端是用的fetch,后端是express框架,fetch请求如下:
`
fetch('http://127.0.0.1:8080/userlogin', {
method: 'post',
headers: {
'Content-Type': 'application/json',
},
mode:'no-cors',
body: JSON.stringify(values),
})
.then((response) => {
return response.text()
})
.then((responseData) => {
alert(responseData);
})
.catch((error) => {
console.error('error', error)
});
`
chrome里面看到的contentType怎么还是text
Request Headers
Accept:*/*
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Content-Length:39
content-type:text/plain;charset=UTF-8
Host:127.0.0.1:8080
Origin:http://localhost:8000
Referer:http://localhost:8000/login
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Request Payload
view source
{username: "guest", password: "guest"}
password
:
"guest"
username
:
"guest"
明明发送时候写的是 application/json ,怎么header是text?
按照这个Github issue的说法是,在
mode
为no-cors
时,有一些header
是不能改变的,其中就包括Content-Type
。因此,你把
mode:'no-cors'
这行去掉就可以设置Content-Type
了。