IP-адрес Cross Origin в белом списке не применяется даже после определения с помощью аннотации @CrossOrigin в проекте Springboot - PullRequest
0 голосов
/ 13 июня 2019

Я следовал https://spring.io/guides/gs/rest-service-cors/ и добавил случайный IP-адрес, подобный этому, к одной из конечных точек моего API -

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

Я ожидаю, что через этот API-интерфейс будут приниматься только запросы от этого IP-адресатеперь, так что ожидание запросов от моего клиента не удастся.Тем не менее, это не происходит.

Я могу запросить с другого сервера, с 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>

Как видно, я получаю IP-адрес сервера, с которого я сделал запрос, в первом IP-адресе, указанном в X-Forwarded-For.Остальные IP-адреса, по-видимому, являются серверами, через которые он маршрутизируется.Я добавил другой IP в происхождение @CrossOrigin ->, но все равно запрос работает нормально.Что еще нужно сделать?

Кстати, это наш сервер-песочница.Я проверил те же журналы 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

Какие бы изменения я ни сделал, мне нужно иметь возможность тестировать в песочнице.

...