背景
写Vue项目需要后台语言做响应请求,于是用node+express搭建一个服务用来做测试,出现了跨域问题
Access to XMLHttpRequest at 'http://localhost:3000/login' from origin 'null' has been blocked by COR
原来我搭建的node服务代码
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.post('/login', (req, res) => {
const user = req.query
console.log( req.query)
if (user.mobile == '13709560002'){
if (user.code == '1111'){
res.header('Access-Control-Allow-Headers',['mytoken','Content-Type']);
res.status(200).end('登陆成功')
// res.send('登录成功',200)
}else {
res.send('密码错误')
}
}else {
res.send('账号错误')
}
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
后面发现这样写会出现跨域问题需要加入响应头,优化后的代码如下
const express = require('express')
const app = express()
const port = 3000
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.post('/login', (req, res) => {
const user = req.query
console.log( req.query)
if (user.mobile == '13709560002'){
if (user.code == '1111'){
res.header('Access-Control-Allow-Headers',['mytoken','Content-Type']);
res.status(200).end('登陆成功')
// res.send('登录成功',200)
}else {
res.send('密码错误')
}
}else {
res.send('账号错误')
}
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
需要设置跨域资源共享响应头才可进行跨域响应
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');