1、前端在调接口的时候遇到跨域问题是很常见的一件事情,这边小编在遇到坑的时候,查阅很多种方法得出的解决办法
2.nodejs这边使用的是cors
先npm i cors
然后再项目启动中使用中间件
如下:
const mysql = require('mysql')
const express = require('express')
const path = require("path")
const app = express()
const router = express.Router();
const cors = require("cors")
const whitelist = ['http://localhost:8080']; //设置白名单
const corsOptions = {
credentials: true, //允许客户端携带验证信息
origin: (origin, callback) => {
// if (whitelist.includes(origin))
if (origin)
return callback(null, true)
callback(new Error('Not allowed by CORS'));
}
}
//全局解决跨域问题
app.use(cors(corsOptions))
上述的写法是可以通过任何端口和域名访问的,因为前端在接口很端口可能不是一直保持一致的 ,当然我们也可以设置白名单,如下:
const mysql = require('mysql')
const express = require('express')
const path = require("path")
const app = express()
const router = express.Router();
const cors = require("cors")
const whitelist = ['http://localhost:8080']; //设置白名单,可以设置多个前端域名
const corsOptions = {
credentials: true, //允许客户端携带验证信息
origin: (origin, callback) => {
if (whitelist.includes(origin))//只要在此处做个判断头部是否是对应的即可,相当于做了个验证
return callback(null, true)
callback(new Error('Not allowed by CORS'));
}
}
//全局解决跨域问题
app.use(cors(corsOptions))//此处调用中间件使用即可!