ajax请求后台数据,必须要遵循同源策略:协议名、主机名、端口号必须要一致。很多情况下,后端项目和前端项目并没有部署到同一个服务器,即便部署到了同一个服务器,由于是两个项目,端口号也会不一样,此时前端项目向后端项目请求资源,就违反了同源策略。此时需要后台项目允许跨域。
前台服务器向后台服务器请求数据,通过代理服务器。前台服务器向代理服务器发送ajax请求,代理服务器采用原生http方式请求后台服务器
// 导入express
let express = require("express");
// 创建一个服务器对象
let app = express();
// 开启一个端口号
app.listen(5566, () => {
console.log("服务器成功开启!端口号5566");
});
//配置中间件,拦截所有的请求
app.use((req, res, next) => {
//允许跨域
// res.setHeader("Access-Control-Allow-Origin", "*");
next();
});
//学生数组
let stus = [
{
no: "1001",
name: "张三",
age: 20,
sex: "男",
},
{
no: "1002",
name: "李四",
age: 22,
sex: "女",
},
{
no: "1003",
name: "王五",
age: 24,
sex: "男",
},
]
// 定义一个get请求接口
app.get("/list", (req, res) => {
res.send(stus);
});
// 导入express
let express = require("express");
// 创建一个服务器对象
let app = express();
// 开启一个端口号
app.listen(7788, () => {
console.log("服务器成功开启!端口号7788");
});
//配置中间件,拦截所有的请求
app.use((req, res, next) => {
//允许跨域
// res.setHeader("Access-Control-Allow-Origin", "*");
next();
});
//汽车数组
let cars = [
{
id: "1001",
name: "奔驰"
},
{
id: "1002",
name: "宝马"
},
{
id: "1003",
name: "奥迪"
},
]
// 定义一个get请求接口
app.get("/list", (req, res) => {
res.send(cars);
});
配置代理服务器
module.exports = {
//取消eslint语法检查
lintOnSave:false,
//devServer是脚手架中的开发服务器
devServer:{
//配置主机名
host:'localhost',
//配置端口号
port:'8080',
//在开发服务器中,配置一个代理服务器地址。
//注意:在开发阶段,通过向当前开发服务器发送ajax请求,当前服务器会将请求转发给配置的代理服务器地址。
// proxy:'http://localhost:5566'
// 配置多个代理服务器地址
proxy:{
// /stu是前缀
'/stu':{
//代理的地址
target:'http://localhost:5566',
//路径重写,因为向真实的后台发送请求时,不需要加前缀
pathRewrite:{
//将地址中,/stu替换成空
'^/stu':''
}
},
'/car':{
target:'http://localhost:7788',
pathRewrite:{
'^/car':''
}
}
}
},
}