NGINX配置
location / {
proxy_pass http://your_backend_server;
# 忽略上游的 Access-Control-Allow-Origin 头部
proxy_hide_header Access-Control-Allow-Origin;
# 在 Nginx 中添加或覆盖 Access-Control-Allow-Origin 头部
add_header Access-Control-Allow-Origin "你的值"; # 注意:一定要是具体的域名,不能是*
# add_header Access-Control-Allow-Origin $http_origin; // 或者是这样,支持所有来源
# 其他必要的代理设置...
}
或者这样支持某几个域名
set $cors_origin "";
if ($http_origin ~* "^http://foo.baidu.com$") {
set $cors_origin $http_origin;
}
if ($http_origin ~* "^http://bar.baidu.com$") {
set $cors_origin $http_origin;
}
add_header Access-Control-Allow-Origin $cors_origin;
本地node代理设置
const express = require('express');
const proxyMiddleware = require('http-proxy-middleware');
const port = 9000;
const proxyTable = {
'/myProxy': {
target: 'http://your_backend_server', // 开发环境
changeOrigin: true, // 是否跨域
onProxyRes: (proxyRes, req, res) => {
// 设置 Access-Control-Allow-Origin 头
// 你可以根据需要设置为 '*' 或特定的源
proxyRes.headers['access-control-allow-origin'] = '你的值';
// 还可以设置其他 CORS 相关的头,如果需要的话
// proxyRes.headers['access-control-allow-methods'] = 'GET, POST, PUT';
// proxyRes.headers['access-control-allow-headers'] = 'Content-Type';
},
pathRewrite: {
'^/myProxy': '' // 重写接口 (线上)
}
},
};
const app = express();
//设置跨域访问
app.all('*', function(req, res, next) {
res.header("access-control-allow-origin", "你的值");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
let options = proxyTable[context];
if (typeof options === 'string') {
options = {target: options};
}
app.use(proxyMiddleware(options.filter || context, options));
});
app.listen(port);