CORS跨域报错解决方法
代码背景
const xhr = new XMLHttpRequest()
xhr.withCredentials = true
xhr.open('GET',`http:
xhr.setRequestHeader('Accept','*/*')
xhr.setRequestHeader('Origin','http://localhost:3001')
xhr.send()
const cors = require('cors')
app.use(cors())
app.get('/data',(request,response)=>{
response.setHeader('Access-Control-Allow-Origin','http://localhost:3001')
response.setHeader('Access-Control-Allow-Credentials','true')
const data ={
username:'ming',
userage:24,
body:'还可以还可以还可还可以还可以还可还可以还可以还可还可以还可以还可'
}
response.send(data)
})
需要注意的点
- 客户端的
xhr.setRequestHeader后的地址一定要与服务端的response.setHeader完全相同,多一个斜杠都不行。
- 在客户端设置
xhr.setRequestHeader('Origin','http://localhost:3001')会引发Refused to set unsafe header "Origin"的安全错误,因为CORS会认为客户端是冒充安全的地址,解决方法是,不要手动设置请求头地址,浏览器会自动解析客户端地址。