如何使用spring java config将X-Frame-Options响应头设置为允许来自值?

Kam*_*shi 7 spring-security http-headers x-frame-options spring-java-config

如何使用spring java config设置值为allow-from的X-Frame-Options响应头?

http.headers().disable()
    .addHeaderWriter(new XFrameOptionsHeaderWriter(
      new WhiteListedAllowFromStrategy(
        Arrays.asList("https://example1.com", "https://example2.com"))));
Run Code Online (Sandbox Code Playgroud)

在Http Response标题中,我得到:

X-Frame-Options:"ALLOW-FROM DENY".

为什么我的起源不在标题值中列出?

Kam*_*shi 7

我最终静态添加了标题,如下所示:

http
    .headers().frameOptions().disable()
    .addHeaderWriter(new StaticHeadersWriter("X-FRAME-OPTIONS", "ALLOW-FROM example1.com"));
Run Code Online (Sandbox Code Playgroud)

  • 使用 Spring security 4.1,我们可以这样做, http.headers().frameOptions().disable() .addHeaderWriter( new XFrameOptionsHeaderWriter(new StaticAllowFromStrategy(URI.create("https://www.example.com"))) ); (3认同)

小智 0

我一直在寻找同样的问题,但没有找到答案。无论我如何尝试配置它,标头总是不正确。

我的解决方法是使用 Spring 框架文档中的委派标头编写器

感谢我建立了一个逻辑来始终设置 SAMEORIGIN 排除一些白名单:

new DelegatingRequestMatcherHeaderWriter(
            new NegatedRequestMatcher(
                    new OrRequestMatcher(
                            whiteLists
                    )
            ),
            new XFrameOptionsHeaderWriter(XFrameOptionsMode.SAMEORIGIN);
Run Code Online (Sandbox Code Playgroud)

背后的逻辑:如果白名单中有任何匹配,则不添加标头,否则添加具有 SAMEORIGIN 值的标头。

我认为值得考虑,因为据我所知并非所有浏览器都支持 ALLOW-FROM。