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);//请求完成   }  })

 

posted @ 2019-12-03 18:03  lpmou  阅读(20536)  评论(0编辑  收藏  举报
返回顶部