Я пытаюсь настроить перенаправление на некоторых из моих сайтов с http на https.
Я делаю это программно в Java, потому что у меня есть несколько сайтов, работающих в одном контейнере сервлета /веб-приложение, и только некоторые из них подключены к cloudflare, поэтому только некоторые из них могут использовать https.
Кодировка кажется довольно простой:
String requestURLLower = req.getRequestURL().toString().toLowerCase();
if ( isCloudflareSite && requestURLLower.startsWith("http:")) {
StringBuilder requestURL = new StringBuilder(requestURLLower);
System.out.println("Got requrl lower " + requestURLLower + " scheme " +
req.getScheme() + " is secure " + req.isSecure());
String queryString = req.getQueryString();
if (queryString != null) {
requestURL.append('?').append(queryString);
}
String link = Strings.replace(requestURL.toString(), "http:", "https:");
System.out.println("RURLLOWEr redirecting to " + link + " from " +
requestURL);
res.setStatus(301);
res.setHeader( "Location", link);
return;
}
Когда я запускаю этот код, браузер перенаправляет слишком много раз и выдает ошибку.
Первоначальный URL, который я вставил в браузер, был сам https: https://www.xxx.com.au/xxx?page=hello
Вывод из программы послевведите точный URL в моем браузере так:
Got requrl lower http://www.xxx.com.au/xxx scheme http is secure false
RURLLOWEr redirecting to https://www.xxx.com.au/xxx?page=hello from
http://www.xxx.com.au/xxx?page=hello
И этот вывод был повторен примерно 20 раз после загрузки одной страницы.
Я что-то упускаю из этого, что-то действительно очевидное, или яване обнаруживает протокол?
Единственное, о чем я могу думать, это то, что он связан с https, предоставляемым Cloudflare.