狀況:本地的前端項目(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);//請求完成 } })