利用原生js的window对象的fetch,封装ajax方法到window上
ajax.js
window.$ajax = (url, method, data = {}) => {
method = method.toLocaleUpperCase()
let config = {
method,
headers: { // 配置请求头
'Content-Type': 'application/json',
'Accept': 'application/json',
'Access-Control-Allow-Origin' : '*'
}
}
if (method === 'GET') {
url += '?'
Object.keys(data).forEach(key => {
url += `${key}=${data[key]}&`
})
url = url.slice(0, url.length - 1)
} else {
config.body = data
}
return new Promise((resolve,reject)=>{
fetch(url,config).then(res=>{ // 因为是fetch,所以和axios或者superagent返回数据格式不一样
res.text().then(resText=>{
resolve(JSON.parse(resText))
}).catch(()=>{
reject('network error')
})
}).catch(err => {
reject(err)
})
})
}
nodejs配置跨域请求
server.js
let express = require('express')
let app = express()
let db = require('./model/connect')
let userRouter = require('./router/userRouter/userRouter')
let questionRouter = require('./router/questionRouter/questionRouter')
app.use(function (req,res,next) {
//每一次发送的请求头
//支持cors跨域
res.header('Access-Control-Allow-Origin','*');
res.header('Access-Control-Allow-Methods','POST, GET, OPTIONS, DELETE')
res.header('Access-Control-Allow-Headers','content-type,x-requested-with,Authorization,x-ui-request,lang,accept,access-control-allow-origin')
res.header('Access-Control-Allow-Credentials','true')
next();
});
app.use('/user',userRouter)
app.use('/question',questionRouter)
app.listen(3000,()=>{
console.log('server start')
})