2016-11-29 64 views
0

到目前为止,我的网络服务器始终设置X-Frame-Options "sameorigin"标题,我没有任何问题。但是,现在我需要在其他服务器上使用iframe,但令我惊讶的是,Chrome和Safari已弃用allow-from,因此无法使用X-Frame-Options了解内容安全策略框架的范围 - 祖先

所以,我将我的标题切换到CSP,但我遇到了一些问题。

假设两台服务器,XA(192.168.1.1)和XB(192.168.1.2)。 XA正在用一些图表提供一个页面,而XB正在为其中一个图表提供一个带有iframe的页面。

在XA中,我使用以下标题:Header set Content-Security-Policy "frame-ancestors 'self' 192.168.1.1"。但是,当我访问XB的网站时,iframe的内容不会被加载,因为它违反了CSP策略。

所以,我有两个问题:

1)在哪个方向的政策工作? XA - > XB或XA < - XB?换句话说,192.168.1.1是正确还是应该使用192.168.1.2?试了两次,但都没有奏效,只是想知道哪一个是正确的。

2)什么可能是得到违反政策的错误的原因?

出于测试目的,XA和XB都只是提供简单的HTML,没什么奇特的。

XA

<html> 
<body> 
    lalala 
</body> 
</html> 

XB

<html> 
<body> 
    <iframe src="http://192.168.1.1"/> 
</body> 
</html> 

当我访问XB浏览器的控制台错误:Refused to display 'http://192.168.1.1/' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' http://192.168.1.1".

回答

0

没关系...刚刚发现的是什么引起的问题。

至于1)策略需要指向192.168.1.2。

关于2)它不工作,因为XB是我的笔记本电脑,我将浏览器指向本地主机。将Apache更改为192.168.1.2而不是127.0.0.1后运行。