Spring 5 Security: jsp: include удаляет X-Frame-Options - PullRequest
0 голосов
/ 26 сентября 2019

Я использую 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 />?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...