У меня есть два веб-приложения: веб-приложение (веб-приложение) и веб-отчет. Я хочу встроенный веб-отчет в веб-приложении в <iframe>
. Поэтому он отклонил браузер с ошибкой:
X-Frame-Options: DENY
Любая помощь?
У меня есть два веб-приложения: веб-приложение (веб-приложение) и веб-отчет. Я хочу встроенный веб-отчет в веб-приложении в <iframe>
. Поэтому он отклонил браузер с ошибкой:
X-Frame-Options: DENY
Любая помощь?
Значение параметров 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()
Если вы используете 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
Вы можете использовать
<headers>
<frame-options policy="SAMEORIGIN"/>
</headers>
внутри вашей конфигурации <http>
в вашем контексте приложения безопасности XML