【问题标题】:Spring Data Rest - Proxy path not including link pathSpring Data Rest - 代理路径不包括链接路径
【发布时间】:2016-03-21 21:06:52
【问题描述】:

我正在像这样代理 Spring REST 后端:

后端: http://backend:8080

代理本地主机:

localhost:3000/api/backend -> http://backend:8080

如果我在本地浏览到代理端点,它将代理请求,但是链接不包括代理路径,即

GET localhost:3000/api/backend/people

"href": "http://localhost:3000/people"

我希望这是:

"href": "http://localhost:3000/api/backend/people"

有没有办法解决这个问题?

谢谢!

【问题讨论】:

    标签: spring-data-rest


    【解决方案1】:

    您应该查看您的代理添加到请求中的x-forwarded-*headers。

    如果从您的代理到后端的请求包含标头 x-forwarded-prefix=/api/backend,spring 将拾取前缀并将其添加到生成的链接中。

    您没有提及您使用的是哪个代理,所以我无法判断您的代理是否支持添加 x-forwarded-prefix 标头。

    【讨论】:

    • 我不久前遇到了这个问题,但我遇到了更复杂的情况http://local/api/people -> http://backend/context/people。除了将后端上下文更改为 api 之外,我没有其他解决方案添加 x-forwarded-prefix 会覆盖上下文还是添加到上下文中?
    • 成功了!我只是在浏览弹簧代码试图找到答案。这只是本地部署的 webpack 代理。所以以下工作(webpack.config.js):devServer:{ contentBase:'build /',代理:{'/api/person *':{目标:'backend:8080',重写:函数(req){req .headers['X-Forwarded-Prefix'] = '/api/person' req.url = req.url.replace(/^\/api\/person/, ''); } } },端口:3000 }
    猜你喜欢
    • 2014-03-28
    • 2018-10-28
    • 2019-09-13
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多