2016-11-29 44 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後運行。