We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
hello,感谢开源~ 请问如果要连接本地其他端口node后台服务需要怎样设置跨域? 我尝试在webpack.dev.config.js中加上如下代码,貌似不行
devServer: { proxy: { "/api": { target: "http://localhost:9527/api/admin", changeOrigin: true, pathRewrite: {'^/api' : ''} } } },
试试在server.js中设置:
const { createProxyMiddleware } = require("http-proxy-middleware"); app.use( "/api", createProxyMiddleware({ target: "http://localhost:9527/api/admin", changeOrigin: true, ws: false, pathRewrite: { "^/api": "/" } }) );
我稍后把proxy的配置更新到代码里
使用最新版本的http-proxy-middleware
换个名字吧,我代码里面mock占用了/api,
/api
app.use( "/proxy", createProxyMiddleware({ target: "https://example.com", // 目标域名 changeOrigin: true, ws: false, pathRewrite: { "^/proxy": "/", }, }) );
我试了一下,可以成功代理 实在不行你把server.js中的mock配置注释掉
server.js中
下面这几行是mock配置,我的mock占用了/api:
const mock = require("./mock/app-data"); // mock模拟数据,模拟后台业务 /** 监听POST请求,返回MOCK模拟数据 **/ app.post(/\/api.*/, (req, res, next) => { const result = mock.mockApi({ url: req.originalUrl, body: req.body }); res.send(result); }); app.get(/\/api.*/, (req, res, next) => { const result = mock.mockApi({ url: req.originalUrl, body: req.body }); res.send(result); });
找到问题所在了,算是一个小坑。你在server.js中用了body-parser,而我的node服务用了koa-body,两个同时存在的时候,会导致post请求挂起。我的解决方法是在server.js屏蔽如下两段代码:
// app.use(bodyParser.urlencoded({ extended: false })); // app.use(bodyParser.json());
或者createProxyMiddleware增加onProxyReq属性:
app.use( "/api", createProxyMiddleware({ target: "http://localhost:9527", // 目标域名 changeOrigin: true, ws: false, onProxyReq: (proxyReq, req, res, options) => { if (req.body) { const bodyData = JSON.stringify(req.body); // incase if content-type is application/x-www-form-urlencoded -> we need to change to application/json proxyReq.setHeader('Content-Type','application/json'); proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData)); // stream the content proxyReq.write(bodyData); } } }) );
官方issue: chimurai/http-proxy-middleware#40 (comment)
厉害了我的哥 nice
向大佬学习~
Activity
javaLuo commentedon Apr 16, 2020
试试在server.js中设置:
我稍后把proxy的配置更新到代码里
yiyu-liao commentedon Apr 17, 2020
javaLuo commentedon Apr 17, 2020
使用最新版本的http-proxy-middleware
换个名字吧,我代码里面mock占用了
/api
,javaLuo commentedon Apr 20, 2020
我试了一下,可以成功代理
实在不行你把
server.js中
的mock配置注释掉下面这几行是mock配置,我的mock占用了
/api
:yiyu-liao commentedon Apr 20, 2020
找到问题所在了,算是一个小坑。你在server.js中用了body-parser,而我的node服务用了koa-body,两个同时存在的时候,会导致post请求挂起。我的解决方法是在server.js屏蔽如下两段代码:
或者createProxyMiddleware增加onProxyReq属性:
官方issue: chimurai/http-proxy-middleware#40 (comment)
javaLuo commentedon Apr 20, 2020
厉害了我的哥 nice
yiyu-liao commentedon Apr 20, 2020
向大佬学习~