Java обнаруживает неправильный протокол в URL? - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь настроить перенаправление на некоторых из моих сайтов с 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.

1 Ответ

0 голосов
/ 22 февраля 2019

SSL, предоставляемый Cloudflare, находится между пользователем и Cloudflare.Cloudflare (используя «гибкий» параметр https) фактически подключается к серверу по протоколу http.

...