Content-Security-Policy的框架祖先在Chrome,Firefox和IE中无效

时间:2018-03-13 13:57:49

标签: google-chrome security firefox java-ee content-security-policy

假设我的主要java Web应用程序在机器上运行; http://192.168.0.1:8080/mainapp

其他两个应用程序正在构建我的主要应用程序 假设其他两个应用程序正在其他机器上运行,如
http://192.168.0.21/TrustedOnehttp://192.168.0.31/TrustedTwo
这两个应用程序框架就像

<html>
<body>
  <iframe src="http://192.168.0.1:8080/mainapp" width="200" height="200">
  </iframe> 
</body>
</html>

我想仅允许http://192.168.0.21/TrustedOnehttp://192.168.0.31/TrustedTwo的框架。 所以我将Content-Security-Policy标头放在我主java应用程序的过滤器类中。

public void doFilter(ServletRequest request, ServletResponse response,  
FilterChain chain) throws IOException, ServletException {  

    response.addHeader("Content-Security-Policy", "frame-ancestors http://192.168.0.21/TrustedOne http://192.168.0.31/TrustedTwo"); 
    chain.doFilter(request, response);
}

我期待的结果是这两个框架应用程序应该可以访问iframe中的主应用程序。

但是这两个框架应用程序都无法在所有浏览器中访问http://192.168.0.1:8080/mainapp; Chrome,Firefox和IE。
所有浏览器都阻止了我的主应用http://192.168.0.1:8080/mainapp
我对内容安全政策的框架祖先的看法是否有问题?

1 个答案:

答案 0 :(得分:2)

frame-ancestors指令只能包含主机或来源,而不是包含路径(documentation)的网址。

删除路径。