2016-03-21 20 views
4

私はそうのような春のRESTのバックエンドプロキシてるリンクパスを含まないプロキシパス:I場合春データ休憩 -

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

バックエンド: http://backend:8080

プロキシ・ローカルホストをプロキシされたエンドポイントにローカルでブラウズすると、リクエストをプロキシしますが、リンクにはプロキシパスは含まれません。つまり、

GET localhost:3000/api/backend/people

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

私はこれがあることを期待する:

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

あり、この問題を解決する方法?

ありがとうございます!

答えて

3

あなたのプロキシが要求に追加するヘッダーを見てください。

プロキシからバックエンドへのリクエストにヘッダx-forwarded-prefix=/api/backendが含まれている場合、スプリングは接頭辞を受け取り、生成されたリンクに追加します。

どのプロキシを使用しているのかわからないので、プロキシがx-forwarded-prefixヘッダーの追加をサポートしているかどうかわかりません。

+0

私はこの問題にぶち当たっていましたが、私はもっと複雑な状況のhttp:// local/api/people' - 'http:// backend/context/people'を持っていました。バックエンドコンテキストを 'api'に変更する以外は解決策がありませんでした.x-forwarded-prefixを追加するとコンテキストを上書きするのか、それともコンテキストの前に追加するのでしょうか? –

+1

それは働いた!私はちょうど答えを見つけようとする春のコードをブラウズしていました。これは、ローカル展開用のWebpackプロキシです。プロキシ:{ '/ api/person *':{ contentBase: 'build /'、 ターゲット: 'http://バックエンド:8080'、 rewrite:function(req){ req.headers ['X-Forwarded-Prefix'] = '/ api/person' req.url = req.url.replace(/^\/api \/person /、 ' '); } } }、 ポート:3000 } – dardo

関連する問題