powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC - неправильный для меня редирект при переходе на SSL
2 сообщений из 2, страница 1 из 1
Spring MVC - неправильный для меня редирект при переходе на SSL
    #37728684
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая темя, несколько чуждая для меня, что с терминологией совсем плохо ... но попробую.

Есть связка Spring MVC + Spring Security.
Мы на странице http://www.myproject.com, кликаем на линк, который ведет на https://www.myproject.com/registrate, но в результате я попадаю на http://www.myproject.com/registrate :(

Chrome в панели разработчика показывает:
NameMethodStatus/TexttypeInitiatorregistrateGET302/Moved TemporaryundefinedOtherregistrateGET200/OKtext/html https://www.myproject.com/registrate

Из того, что я почитал, я понял, что дело в спринговском редиректоре и его флаге http10compatible , который при значении true как раз и делает такую "каку" - заставляет спринг выдавать страницу в стандарте 1.0, то есть без SSL.

Примерно оттуда же вычитал, что этот флаг можно установить как false в ViewResolver. Как бы в конфиге я его не использую, но для нужного дела применил:
Код: xml
1.
2.
3.
4.
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="http10compatible" value="false"/>
</bean>


но никакого эффекта это не возымело.

В контроллере переход осуществляется следующим образом (укороченно):
Код: java
1.
2.
3.
4.
5.
6.
7.
@RequestMapping(value = "/registrate")
public ModelAndView registrate(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
	ModelAndView result = new ModelAndView("/pages/registrate.jsp");
	result.addObject(...);
	...
	return result;
}


Что интересно, что когда я только начал возиться с этим проектом, у меня показывалась страница с https (понятно, для localhost сертификаты куцые, поэтому не все по маслу) - сейчас не пойму что пошло не так, выложил наметки на удаленный сервак с нормальными сертификатами, думал, что "протолкну" проблему, но там точно такая же бяка ... только из-за того, что сертификаты рабочие, даже не предупреждает, что переходит в защищенный режим.

В общем, плиз, подскажите, куда копать и как "заставить" сервер возвращать не 302, а 200 или хотя бы 303 на SSL.

Проект в начальной стадии, поэтому конфиги пока короткие.
springmvc-servlet.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	...
	<context:component-scan base-package="myproject"/>
	<mvc:annotation-driven/>
	<mvc:resources mapping="/images/**" location="/images/"/>
	<mvc:resources mapping="/scripts/**" location="/scripts/"/>
	<mvc:resources mapping="/styles/**" location="/styles/"/>

	<mvc:interceptors>
		<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
			<property name="paramName" value="language"/>
		</bean>
		<bean id="attributesInterceptor" class="myproject.interceptors.AttributesInterceptor"/>
	</mvc:interceptors>
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
		<property name="defaultLocale" value="en"/>
	</bean>
	...


spring-context-security.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
	<security:http auto-config="true">
		<security:intercept-url pattern="/**" access="ROLE_ANONYMOUS" requires-channel="http"/>
		<security:intercept-url pattern="/registrate" access="ROLE_ANONYMOUS" requires-channel="https" method="GET"/>
		...
		<security:intercept-url pattern="/login" access="ROLE_ANONYMOUS" requires-channel="https" method="GET"/>
	</security:http>
	<security:authentication-manager>
		...
	</security:authentication-manager>


В общем, завис на этой ноте. Буду признателен за советы ...
...
Рейтинг: 0 / 0
Spring MVC - неправильный для меня редирект при переходе на SSL
    #37729094
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ночь прошла не зря, правда, ответов не дождался. Решение меня убило ...
Банально в spring-context-security.xml надо переставить intercept-url'ы:
Код: xml
1.
2.
3.
4.
5.
6.
	<security:http auto-config="true">
		<security:intercept-url pattern="/registrate" access="ROLE_ANONYMOUS" requires-channel="https" method="GET"/>
		<security:intercept-url pattern="/login" access="ROLE_ANONYMOUS" requires-channel="https" method="GET"/>
		...
		<security:intercept-url pattern="/**" access="ROLE_ANONYMOUS" requires-channel="http"/>
	</security:http>


Видимо, когда паттерн "/**" стоял первым, дальнейших сопоставлений не происходило, поэтому до "/registrate" не доходит.
Единственное, что сбивает с толку - я на 100% уверен, что когда сделал тот же "/registrate", то он гарантийно стоял после "/**" (потому что "/**" все время стоял первым), и точно запрос был SSL, так как в Хроме была перечеркнутая красная надпись " HTTPS://". Правда, нет уверенности в других "моментах" - типа, паттернов в web.xml.

Короче, вопрос пока решен. Хром, правда, заработал только после очистки его кеша (странно).
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC - неправильный для меня редирект при переходе на SSL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]