Разрешить веб-страницу в HTML-рамке

У меня есть два веб-приложения: веб-приложение (веб-приложение) и веб-отчет. Я хочу встроенный веб-отчет в веб-приложении в <iframe>. Поэтому он отклонил браузер с ошибкой:

X-Frame-Options: DENY

Любая помощь?

Ответ 1

Значение параметров X-Frame может быть DENY (по умолчанию), SAMEORIGIN и ALLOW-FROM uri. В соответствии с Spring документацией по безопасности вы можете сообщить Spring, чтобы перезаписать поведение по умолчанию, добавляя свой собственный заголовок таким образом:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .headers()
            .addHeaderWriter(new XFrameOptionsHeaderWriter(new WhiteListedAllowFromStrategy(Arrays.asList("www.yourhostname.com"))))
    ...
}

и Spring должны добавить X-Frame-Options: ALLOW-FROM... или

 .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))

для X-Frame-Options: SAMEORIGIN или полностью отключить его

http.headers().frameOptions().disable()

Ответ 2

Если вы используете Spring Security 4.x, следующая конфигурация решит вашу проблему (предполагая, что webapp работает на одном и том же адресе сервера).

Конфигурация XML:

<http>
    <!-- ... -->

    <headers>
        <frame-options policy="SAMEORIGIN" />
    </headers>
</http>

Конфигурация Java:

@EnableWebSecurity
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        // ...
        .headers().frameOptions().sameOrigin();
    }
}

Отключить конфигурацию

Вы также можете просто отключить его, осознав риск безопасности.

http.headers().frameOptions().disable();


Фоновая информация

В Spring Security 3.2.0 были введены заголовки безопасности, но по умолчанию они были отключены:
http://spring.io/blog/2013/08/23/spring-security-3-2-0-rc1-highlights-security-headers/

В Spring Security 4.x заголовки включены по умолчанию (для IFrames: X-Frame-Options: DENY): "Spring Security 4.x изменила конфигурацию Java и конфигурацию XML, чтобы требовать явного отключения настроек по умолчанию".
http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-jc.html#m3to4-header

источник: http://docs.spring.io/autorepo/docs/spring-security/4.0.x/reference/html/headers.html#headers-frame-options

Ответ 3

Вы можете использовать

<headers>
  <frame-options policy="SAMEORIGIN"/>
</headers>

внутри вашей конфигурации <http> в вашем контексте приложения безопасности XML