Http-proxy-middleware不转发完整路径
http-proxy-middleware does not forward the full path
我正在尝试配置BrowserSync以服务器模式工作,并使用http-proxy-middleware将我的API请求代理到运行在同一台机器上的不同端口上的后端。我使用Gulp来启动BrowserSync。
BrowserSync在端口8081上运行。我的后端运行在8080上。
下面是我创建代理中间件的方法:var proxyApi = proxy('/api', {target : 'http://localhost:8080/api', logLevel : 'debug'});
下面是我如何从Gulp任务中运行BrowserSync:
// Init BrowserSync with proxies as middleware and based on the dest dir
browserSync.init({
open: true,
port: config.proxyPort,
server: {
baseDir: config.destDir,
middleware: [proxyApi]
},
browser: "google chrome"
});
输出:
[HPM] Proxy created: /api -> http://localhost:8080/api
一切都很好。
但是当我点击例如http://localhost:8081/api/users
时,输出是:
[HPM] GET /api/users/123 -> http://localhost:8080/api
…我的客户端得到一个404错误,因为/api
本身不匹配任何后端。
我从文档和示例中了解到,目标实际上应该是http://localhost:8080/api/users/123
为什么路径的其余部分(在本例中为/users/123
)被忽略了?
使用以下版本:
"gulp": "3.9.1",
"browser-sync": "2.16.0",
"http-proxy-middleware": "0.17.1",
默认prependPath
为true
。该选项由底层库提供:http-proxy。
有两种方法可以解决这个问题:prependPath: true/false,默认值:true -指定是否需要将目标路径添加到代理路径
1)。将target
从'http://localhost:8080/api'
更改为'http://localhost:8080'
var proxyApi = proxy('/api', {target: 'http://localhost:8080', logLevel: 'debug'});
2)。或者您可以将选项prependPath
设置为false
。
var proxyApi = proxy('/api', {target: 'http://localhost:8080/api', prependPath: false, logLevel: 'debug'});
相关文章:
- Javascript:使用绝对路径设置img src
- 如何在d3.js中返回路径的y坐标
- 复制图像路径以单击它
- 从模块内部访问Express装载路径
- JS文件的路径正在消失
- 使用onclick绘制SVG路径
- jpm的默认Firefox路径没有'不起作用
- 如何使用jquery将base64图像路径转换为真实路径
- 可以用'吗/'在相对路径中
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 将Windows文件路径组织到文件夹中
- Ajax URL路径未替换当前URL
- 如何使用Javascript上传给定路径的文件
- 如何将要单独填充的每个HTML画布路径/形状分开
- 请求准备一个文件并返回路径,允许用户在准备好时下载
- 动态路径用于流星/铁路由器
- 在ng中给出文件路径包括什么
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- 如何设置SVG路径的样式以拍摄图像
- Http-proxy-middleware不转发完整路径