Как избежать попадания HTTP-вызовов из HTTP в приложение Spring, использующее spring-web mvc -3.2.11? - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть простое java приложение, которое выполняет вход в систему. Здесь основной c контроллер:

public class LoginController extends MyAccountFormController{
 // Override formBackingObject, handleRequestInternal ...
 @Override
    protected ModelAndView onSubmit(final HttpServletRequest request,
        final HttpServletResponse response, final Object command, final BindException errors)
        throws Exception
    {
      // Login operation against DB ...
      return new ModelAndView(new RedirectView(ViewConstants.MY_ACCOUNT_VIEW_REDIRECT,
                                    true, true, false));
    }
}

Здесь MyAccountFormController:

import org.springframework.web.servlet.mvc.SimpleFormController;
public class MyAccountFormController extends SimpleFormController{
   // Bunch of services magically autowired for the login Controller
}

Здесь некоторые из xml конфигурации:

  <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
    <property name="order" value="2"/>
  </bean>
  <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver">
    <property name="order" value="0"/>
  </bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="urlMap">
      <map>
        <entry key="/login.html" value-ref="loginController" />
      </map>
    </property>
  </bean>

Приложение достижимая впадина AWS Балансировщик нагрузки в экземпляр EC2. Сертификат SSL принадлежит балансировщику нагрузки, поэтому, когда запрос https попадает на балансировщик нагрузки, он пересылает экземпляр EC2, прослушивающий порт 8080.

Экземпляр EC2 запускает Tomcat 7 (не встроенный tomcat).

Проблема заключается в том, что когда он попадает на страницу входа и успешно выполняет вход, он попадает в запрос http для ViewConstants.MY_ACCOUNT_VIEW_REDIRECT.

Как сохранить протокол в https. Это необходимо для того, чтобы реферер не был нулевым при переходе от представления к другому, например к странице «Вход в учетную запись».

Я уже пытался применить следующую конфигурацию tomcat, но ничего не изменилось:

  <Valve className="org.apache.catalina.valves.RemoteIpValve"
           remoteIpHeader="x-forwarded-for"
           remoteIpProxiesHeader="x-forwarded-by"
           protocolHeader="x-forwarded-proto"
    />

Я также попытался установить http10Compatible, добавив следующее свойство к InternalViewResolver следующим образом:

  <property name="redirectHttp10Compatible" value="false" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...