很多接口存在跨域问题,一版都会说让后端开发在接口加一个 ”Access-Control-Allow-Origin” 之类的就可以了
BUT 就有时候,后端处于任何理由,可能加不了。
那接口又要调试,怎么办?
以下是 nodejs 代理跨域解决的方式
注 如果你还不知道如何使用 nodejs,npm,webpack 之类的,这篇文章可能对你来说没什么用
下面开始正题:
1. 正常编写 js
首先是我们正常的目录结构:html+css+js。静态页面开发完成之后,你需要对接数据接口,我们把正常的 ajax 接口请求放在 script.js 里面,请求路径在下图 2。我们的所有跨域处理在 app.js 中
2.app.js 全文:
var express = require('express');
var proxy = require('http-proxy-middleware');
var app = express();
app.use('/', proxy({
// 代理跨域目标接口
target: 'http://localhost:8090',
changeOrigin: true,
// 修改响应头信息,实现跨域并允许带 cookie
onProxyRes: function(proxyRes, req, res) {res.header('Access-Control-Allow-Origin', '*');
},
// 修改响应信息中的 cookie 域名
// cookieDomainRewrite: '' // 可以为 false,表示不修改
}));
app.listen(8020);// 你的端口
3.nodejs 运行,执行代理。
到 app.js 的父级目录上运行:node app.js。将你的代理运行起来如下所示为正常。然后你就可以在你的 JS 里面正常调用你的接口啦。
这是一般我们没有用 webpack 的时候的做法。如果使用了 webpack 之类的,里面会有封装好的跨域代理。修改根目录下的 config->index.js 里面的 proxy 代理即可。