gpt4 book ai didi

java - 将 X-Frame-Options 的配置更改为 ALLOW-FROM 时 Spring Boot 中出现异常

转载 作者:行者123 更新时间:2023-12-02 11:56:31 31 4
gpt4 key购买 nike

我已经在一个使用 Spring Boot 的项目中工作了一段时间,现在,根据要求,我正在使用一些需要渲染的 html 文件,其中一个使用 iframe 来显示以下信息另一个网页(来自同一公司的另一个业务部门,但位于不同的域)。

到目前为止,我在 SpringConfiguration 中所做的如下:

@EnableWebSecurity
@Configuration
public class MyApplicationConfiguration extends WebSecurityConfigurerAdapter {

@Value("${company.domain}")
private String companyDomain;

@Override
protected void configure(HttpSecurity http) throws Exception {
http.headers().frameOptions().disable().addHeaderWriter(new XFrameOptionsHeaderWriter(new StaticAllowFromStrategy(URI.create(this.companyDomain))));
}
}

根据我在互联网和论坛上检查的内容,它应该可以正常工作,但它没有提及以下内容:

Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Injection of autowired dependencies failed; nested exception is java.lang.IllegalStateException: @Order on WebSecurityConfigurers must be unique. Order of 100 was already used on com.sampleapp.myapp.ecards.MyApplicationConfiguration$$EnhancerBySpringCGLIB$$24364a75@13ecedf6, so it cannot be used on com.sampleapp.dep.dsp.core.autoconfigure.DsfCoreAutoConfiguration$DSFServerWebSecurityConfig$$EnhancerBySpringCGLIB$$a540fd8@7ec416a0 too.

顺便提一下,我发现解决方案是在我的项目上下文中删除 @Order 注释,但我的项目中没有任何 @Order 注释。此外,该公司的项目是使用一些预定义的 Maven 原型(prototype)创建的,这些原型(prototype)将为所有软件组件创建自定义文件夹结构,并创建具有所有必需依赖项的 pom.xml(必须使用这些依赖项) ,所以我无法删除其中任何一个,只需添加)。此外,我无法编辑或删除用作项目依赖项的组件上的注释。

您会推荐什么其他解决方案?或者是否有任何解决方法可以解决此问题?

预先感谢您的时间和帮助。

最佳答案

WebSecurityConfigurer 适配器的默认顺序是 100,您的应用程序中似乎有两个:

  • com.sampleapp.myapp.ecards.MyApplicationConfiguration
  • com.sampleapp.dep.dsp.core.autoconfigure.DsfCoreAutoConfiguration$DSFServerWebSecurityConfig

您应该更新其中一个,以使用 @Order 显式注释,并指定 100 以外的值。考虑到您所描述的限制,将 @Order 添加到com.sampleapp.myapp.ecards.MyApplicationConfiguration 似乎更有可能没问题。其顺序应该更高还是更低将取决于安全配置不同部分之间的关​​系,以及如果该配置重叠,您希望优先考虑哪一个。

关于java - 将 X-Frame-Options 的配置更改为 ALLOW-FROM 时 Spring Boot 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47561839/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com