Nodejs允许跨域访问
状况:本地的前端项目(uni-app)以及后台管理(vue-mongo-node)和本地mongo数据库
前台项目端口是8082,后台数据接口是8081.
跨域解决,直接上代码:
uni-app的mainfest.json下: 红色部分代理(node设置允许跨域之后,不加这部分的代理也可以跨域请求) 可加可不加
"app-plus": { /* 5+App特有相关 */
"splashscreen": {
"alwaysShowBeforeRender": true,
"waiting": true,
"autoclose": true,
"delay": 0
},
"modules": { /* 模块配置 */
},
"h5": {
"devServer": {
"port": 8081,
"disableHostCheck": true,
"proxy": {
"/api": {
"target": "http://localhost:8081",
"changeOrigin": true, //开启代理
"ws": false,
"pathRewrite": {
"^/api": ""
}
}
}
}
},
node接口部分:server.js(一定一定要放在最上面,实例化之后); 允许跨域一定要放在实例化之后!!!!
const express = require("express");
const app = express();
//设置跨域访问
app.all("*",function(req,res,next){
//设置允许跨域的域名,*代表允许任意域名跨域
res.header("Access-Control-Allow-Origin","*");
//允许的header类型
res.header("Access-Control-Allow-Headers","content-type");
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
if (req.method.toLowerCase() == 'options')
res.send(200); //让options尝试请求快速结束
else
next();
})
请求例子:
uni.request({ url:"http://localhost:8081/api/test", method:"GET", success(data) { console.log(data);//请求成功 },
fail(err){ console.log(err) }, complete(res) { console.log(res);//请求完成 } })

浙公网安备 33010602011771号