Когда я запускаю свое приложение на движке Google kubernetes, я получаю org.springframework.web.client.HttpClientErrorException$Запрещено: 403 Запрещенная ошибка

# #java #spring-boot #http #google-kubernetes-engine

Вопрос:

Я использую пробную версию платформы google kubernetes для развертывания приложения spring boot. Я только что установил maven и попытался запустить приложение spring boot. Мое приложение на самом деле регулярно вызывает общедоступный api rest и обрабатывает ответ. Это прекрасно работает в моей локальной системе Windows. Но когда я запускаю его в GKE, он выдает следующую ошибку

 <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR... (919 bytes)]
        at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:109) ~[spring-web-5.3.6.jar!/:5.3.6]
        at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:186) ~[spring-web-5.3.6.jar!/:5.3.6]
        at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:125) ~[spring-web-5.3.6.jar!/:5.3.6]
        at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.3.6.jar!/:5.3.6]
        at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:819) ~[spring-web-5.3.6.jar!/:5.3.6]
        at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:777) ~[spring-web-5.3.6.jar!/:5.3.6]
        at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711) ~[spring-web-5.3.6.jar!/:5.3.6]
        at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:602) ~[spring-web-5.3.6.jar!/:5.3.6] ```

my http call:
public void callHttpUrl(List<String> pinCodes) throws JsonProcessingException {
        String url = env.getProperty("base.url");
        String date = DateUtil.getTodayDate();
        for (String pinCode : pinCodes) {
            UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUriString(Objects.requireNonNull(url))
                    .queryParam("pincode", pinCode)
                    .queryParam("date", date);
            HttpHeaders headers = new HttpHeaders();
            headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
            headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
            HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
            uriComponentsBuilder.toUriString();
            LOGGER.debug("URL is {}", uriComponentsBuilder.toUriString());
            String response = restTemplate.exchange(uriComponentsBuilder.toUriString(), HttpMethod.GET, entity, String.class).getBody();
            LOGGER.debug(response);
            processResponse(response);
        }
 

Комментарии:

1. Ответ HTTP 403 означает, что клиенту не разрешен доступ к ресурсу. Действительно ли вызываемый вами API требует какого-либо типа аутентификации?

2. Нет, для этого не требуется никакой аутентификации.

Ответ №1:

Вы пытались получить доступ к любому другому API, чтобы узнать, сохраняется ли проблема или у вас проблемы только с текущим API? Похоже, что это новая конфигурация, но были ли у вас какие-либо успешные запросы к другим API?