J'ai CKeditor sur mon jsp et chaque fois que je télécharge quelque chose, l'erreur suivante apparaît:
Refused to display 'http://localhost:8080/xxx/xxx/upload-image?CKEditor=text&CKEditorFuncNum=1&langCode=ru' in a frame because it set 'X-Frame-Options' to 'DENY'.
J'ai essayé de supprimer Spring Security et tout fonctionne à merveille. Comment puis-je désactiver ceci dans le fichier XML de sécurité de printemps? Que devrais-je écrire entre les balises <http>
Par défaut, X-Frame-Options
est défini sur refusé pour empêcher les attaques clickjacking . Pour annuler cela, vous pouvez ajouter ce qui suit dans votre configuration de sécurité Spring
<http>
<headers>
<frame-options policy="SAMEORIGIN"/>
</headers>
</http>
Voici les options disponibles pour la politique
Pour plus d'informations jeter un oeil ici .
Et here pour vérifier comment vous pouvez configurer les en-têtes à l'aide de XML ou de Java configs.
Notez que vous devrez peut-être également spécifier le paramètre approprié strategy
, en fonction des besoins.
Si vous utilisez les configurations Java à la place des configurations XML, mettez ceci dans votre méthode WebSecurityConfigurerAdapter.configure(HttpSecurity http)
:
http.headers().frameOptions().disable();
Très probablement, vous ne souhaitez pas désactiver complètement cet en-tête, mais utilisez SAMEORIGIN
. Si vous utilisez les Java Configs (Spring Boot
) et souhaitez autoriser les X-Frame-Options: SAMEORIGIN
, vous devez utiliser les éléments suivants.
Pour les anciennes versions de Spring Security:
http
.headers()
.addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
Pour les versions plus récentes telles que Spring Security 4.0.2 :
http
.headers()
.frameOptions()
.sameOrigin();
Si vous utilisez la configuration XML, vous pouvez utiliser
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security">
<security:http>
<security:headers>
<security:frame-options disabled="true"></security:frame-options>
</security:headers>
</security:http>
</beans>
Si vous utilisez Spring Boot, le moyen le plus simple de désactiver les en-têtes par défaut de Spring Security consiste à utiliser les propriétés security.headers.*
. En particulier, si vous souhaitez désactiver l'en-tête par défaut X-Frame-Options
, ajoutez ce qui suit à votre application.properties
:
security.headers.frame=false
Il existe également les propriétés security.headers.cache
, security.headers.content-type
, security.headers.hsts
et security.headers.xss
que vous pouvez utiliser. Pour plus d'informations, consultez SecurityProperties
.
Si vous utilisez la configuration Java de Spring Security, tous les en-têtes de sécurité par défaut sont ajoutés par défaut. Ils peuvent être désactivés à l'aide de la configuration Java ci-dessous:
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.headers().disable()
...;
}
}