UrlRewriteFilter Прямо к https

Я использую UrlRewriteFilter для перенаправления к SSL. Я выполняю Glassfishv2.

Мое правило выглядит примерно так теперь. Это находится в моем urlrewrite.xml в СЕТИ-INF моей военной папки. Там какая-либо другая glassfish устанавливает, который должен быть установлен?

<rule>
        <condition name="host" operator="notequal">https://abc.def.com</condition>
     <condition name="host" operator="notequal">^$</condition>
     <from>^/(.*)</from>
     <to type="permanent-redirect" last="true">https://abc.def.com/ghi/$1</to>
    </rule>

Но FF продолжает говорить, что правило перенаправления URL состоит способом в том, что это никогда не будет завершаться. Я не абсолютно уверен, что происходит здесь. какие-либо идеи?

7
задан Srinivas Reddy Thatiparthy 2 August 2010 в 04:41
поделиться

2 ответа

значение имени хоста, указанное в правиле перезаписи URL, не может включать схему. UrlRewriteFilter внутренне использует методы API сервлета для определения имени хоста через request.getServerName () ; этот вызов метода никогда не возвращает схему, поэтому лучше выполнять проверку схемы отдельно (как подразумевал Тим).

Если вы заметили другие доступные методы, проверка схемы должна выполняться отдельно, поскольку схема доступна только через метод request.getScheme () в API, который предоставляется отдельно через UrlRewriteFilter. .

Настоящая причина того, почему FF сообщает об ошибке перенаправления, вероятно, связана с тем, что несколько 302-х отправляются обратно клиенту для исходного запроса (и последующих запросов, сделанных клиентом). Возможно, вы захотите отслеживать HTTP-трафик, чтобы определить, существует ли правило, которое присутствует при сбое перенаправления HTTPS, по фактической причине поведения в вашем приложении.

РЕДАКТИРОВАТЬ:

Если возможно, вы можете исследовать использование элемента КОНФИДЕНЦИАЛЬНАЯ транспортная гарантия в web.xml, чтобы гарантировать, что контейнер сервлета принудительно выполняет все HTTP-запросы через SSL.

0
ответ дан 6 December 2019 в 22:59
поделиться

Я подозреваю, что проблема в том, что значение заголовка host (с которым вы сравниваете) не содержит схему, используемую для доступа к ресурсу, где ваше сравнение значение. Это означает, что условие всегда истинно, потому что хост никогда не равен тому, с чем вы его сравниваете, что приводит к бесконечному циклу перенаправления.

Глядя на документацию для UrlRewriteFilter , вы должны иметь возможность сделать что-то вроде этого, чтобы получить то, что вы хотите:

<rule>
    <condition type="scheme" operator="notequal">https</condition>
    <condition name="host" operator="equal">abc.def.com</condition>
    <from>^/(.*)</from>
    <to type="permanent-redirect" last="true">https://abc.def.com/ghi/$1</to>
</rule>
11
ответ дан 6 December 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: