0

https://spring.io/guides/gs/rest-service-cors/に従い、このようなランダムな IP を API エンドポイントの 1 つに追加しました -

@Produces(MediaType.APPLICATION_JSON)
    @CrossOrigin(origins = "116.206.111.61")
    public XAmount getBalance(@Context SecurityContext security) {
        String customer = null;
        .. API code goes here ..
        }
    }

現在、この IP からのリクエストのみがこの API を介して受け入れられることを期待しているため、クライアントからのリクエストは失敗することが予想されます。しかし、それは起こっていません。

IPを使用して、別のサーバーからリクエストできます。IP1としましょう。変更を行った後のリクエストログは次のとおりです-

2020-06-05 09:36:57,407 283453 [XNIO-3 task-1] INFO  [LoggingFilter.java:155] - 1 * Server has received a request on thread XNIO-3 task-1
1 > GET http://sandbox-server.com/service/v2/api
1 > Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
1 > Accept-Encoding: gzip
1 > Authorization: Bearer <token>
1 > Cache-Control: no-cache
1 > Connection: close
1 > Content-Type: application/x-www-form-urlencoded; charset=UTF-8
1 > Host: <domain of API>
1 > Pragma: no-cache
1 > User-Agent: Java/1.7.0_79
1 > X-Forwarded-For: <IP - source server from which API call is made>, <some other IP>, <yet another IP>, <yet another IP>
1 > X-Forwarded-Host: <domain of API>
1 > X-Forwarded-Port: 443
1 > X-Forwarded-Proto: https
1 > X-Forwarded-Server: <domain of API>

ご覧のとおり、X-Forwarded-For の下にリストされている最初の IP で、要求を行ったサーバーの IP を取得します。残りの IP は、ルーティングに使用されるサーバーのようです。@CrossOrigin -> origins に別の IP を追加しましたが、それでもリクエストは正常に機能しています。他に何をする必要がありますか?

ちなみに、これは私たちのサンドボックス サーバーです。この変更を加えずに、本番環境で同じ API ログを確認しました。そこに、X-Forwarded-For が表示されません。代わりに、Client-IP ヘッダーが表示されます -

2019-06-13 07:04:13,357 248327 [XNIO-3 task-17] INFO  [LoggingFilter.java:155] - 47 * Server has received a request on thread XNIO-3 task-17
47 > GET domain-of-api/service/v2/api
47 > Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
47 > Accept-Encoding: gzip
47 > Authorization: Bearer <token>
47 > Cache-Control: no-cache
47 > Client-IP: <IP of an internal server via which traffic is routed>
47 > Connection: Close
47 > Content-Type: application/x-www-form-urlencoded; charset=UTF-8
47 > Host: <domain of API>
47 > Pragma: no-cache
47 > User-Agent: Java/1.7.0_111

どんな変更を加えても、サンドボックスでテストできる必要があります。

4

0 に答える 0