Глядя на ваш код, я заинтересовался этой строкой кода:
httpHeaders.add("access-control-allow-origin", "*");
Вместо использования звездочки вы можете попытаться указать происхождение источника, то есть, откуда должен исходить запрос. Браузеры, такие как chrome или firefox, могут не всегда вести себя корректно, если обнаружат, что источник отсутствует MAYBE из-за различий в доменах или из-за проблем с CORS.
Когда запрос отправляется, сетевой уровень пытается найти ресурс, и здесь кажется, что непростой заголовок вызывает проблему или сбивает с толку браузер.
Браузер сначала отправляет запрос OPTIONS без данных [основное первое действие для запросов, чтобы увидеть, что должно быть обслужено, и, если он найден верным, перейти к реальному запросу], чтобы подтвердить, что сервер примет запрос на подходящий ответ.
Я думаю, что Content-Type не относится ни к одному из следующих типов: application / x-www-form-urlencoded, multipart / form-data или text / plain делает запрос непростым. Подробнее об этом здесь для непростых запросов .
Кроме того, было бы хорошо проверить, отправляет ли ваша Java-программа заголовок Proxy-Authorization. Проверьте заголовки сеанса TCP, чтобы увидеть, отсутствует ли он.
Другая часть, которую я, возможно, захочу протестировать, - это прокси-шаблон отдыха. Конечно, вам может потребоваться изменить его, как требуется для работы с SSL, но ниже приведен базовый пример с учетными данными для аутентификации.
private final RestTemplate getProxiedRestTemplate() {
RestTemplate r = null;
if (isProxyActivated()) {
HttpClientBuilder client = HttpClientBuilder.create();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
client.setProxy(new HttpHost("your ip", 8080 //or the port you want to use}
));
if (withAuthentication()) {
Credentials credentials = new UsernamePasswordCredentials(getProxyUsername(), getProxyPassword());
AuthScope authScope = new AuthScope("your ip", 8080);
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(authScope, credentials);
client.setDefaultCredentialsProvider(credsProvider);
}
requestFactory.setHttpClient(client.build());
r = new RestTemplate(requestFactory);
} else {
r = new RestTemplate();
}
return r;
}
Я надеюсь, что этот пост окажется полезным или, по крайней мере, направит вас в более подходящем направлении, всего наилучшего.