Я использую JstlView
в приложении Spring MVC 5 с безопасностью Spring;который я зарегистрировал в классе, который реализует WebMvcConfigurer
:
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
В моем классе, который расширяется WebSecurityConfigurerAdapter
Я настроил HttpSecurity http
как:
RequestMatcher[] framePageRequestMatchers =
new RequestMatcher[] {
new AntPathRequestMatcher("/user/landing"),
new AntPathRequestMatcher("/user/login")
};
OrRequestMatcher orRequestMatcher = new OrRequestMatcher(framePageRequestMatchers);
DelegatingRequestMatcherHeaderWriter xFrameOptionsHeaderWriter =
new DelegatingRequestMatcherHeaderWriter(
orRequestMatcher,
new XFrameOptionsHeaderWriter(XFrameOptionsMode.DENY)
);
http
.headers()
.frameOptions().disable()
.addHeaderWriter(xFrameOptionsHeaderWriter)
По вышеупомянутой конфигурацииЯ отключаю параметры фрейма для всех страниц, кроме /user/landing
и /user/login
.
У меня есть следующие две страницы jsp:
landing.jsp :
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<jsp:include page="../../includes/head.jsp" flush="true" />
</head>
<body class="landing loggedIn">
</body>
</html>
head.jsp :
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="shortcut icon" href="/resources/images/favicon.ico" />
<link type="text/css" rel="stylesheet" href="<c:url value='/resources/css/style.css' />" />
В соответствии с настройкой безопасности, я должен увидеть X-Frame-Options: DENY inЗаголовок ответа.Но я не могу.Если я удалю <jsp:include />
из <head />
landing.jsp , я смогу увидеть этот заголовок ответа.
Вместо <jsp:include />
, если я использую <c:import />
как:
<c:import var="headJsp" url="../../includes/head.jsp" />
<c:out value="${headJsp}" escapeXml="false" />
Появляется заголовок ответа.
- Почему Опции X-Frame: DENY Заголовок ответа изменяется в случае
<jsp:include />
? - Используя
<jps:param />
с <jsp:include />
, можно передать переменный объект на страницу включения.Как этого добиться с <c:import />
?