将Liferay网站嵌入为iframe无法在外部网站上运行

时间:2016-01-19 20:32:34

标签: iframe liferay liferay-6

我有一个有Portlet的Liferay页面。我试图将此页面作为iframe嵌入到外部网站中,而不是在Liferay中,但是它在控制台中给出错误:

  

拒绝展示' https://example.com'在一个框架,因为它设置   ' X型框架,选项'到#SAMEORIGIN'

我正在使用下面的html iframe标记来嵌入它:

 :Menu("FROGGER","START",S,"QUIT",Q 
:Lbl Q 
:ClrHome 
:Pause "BYE 
:ClrHome 
:Output(1,1," 
:Return
:Lbl S 
:ClrHome 
:‾1→S 
:Lbl 1 
:ClrHome 
:S+1→S 
:8→A
:8→B
:randInt(3,14→C 
:randInt(3,14→D 
:randInt(3,14→E 
:randInt(3,14→F 
:randInt(3,14→G 
:randInt(3,14→H 
:While 1
:getKey→K 
:If max(K=24,25,26,34 
:Output(A,B,"  
:Output(2,C+1,"  
:Output(3,D+1,"  
:Output(4,E+1,"  
:Output(5,F+1,"  
:Output(6,G+1,"  
:Output(7,H+1,"  
:For(N,1,7 
:Output(N,1,"  
:End 
:A-(K=25)(A>1)+(K=34)(A<8→A 
:B-(K=24)(B>3)+(K=26)(B<14)→B 
:Output(A,B,"^ 
:Output(2,C,"< 
:Output(3,D,"< 
:Output(4,E,"< 
:Output(5,F,"< 
:Output(6,G,"< 
:Output(7,H,"< 
:C-1→C 
:D-1→D 
:E-1→E 
:F-1→F 
:G-1→G 
:H-1→H 
:If not(C 
:14→C 
:If not(D 
:14→D 
:If not(E 
:14→E 
:If not(F 
:14→F 
:If not(G 
:14→G 
:If not(H 
:14→H 
:If A=2 and B=C or A=3 and B=D or A=4 and B=E or A=5 and B=F or A=6 and B=G or A=7 and B=H:Goto 2 
:If A=1 
:Goto 1 
:End 
:Lbl 2 
:ClrHome 
:Disp "SCORE:",S 
:Pause 
:ClrHome 
:Output(1,1," 
:DelVar ADelVar BDelVar CDelVar DDelVar EDelVar FDelVar GDelVar HDelVar KDelVar S

按照这个帖子,我试着把&#34;&amp; output = embed&#34;在网址末尾但它没有工作:Refused to display in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'

我不确定是否需要更改Liferay端的设置或任何代码才能使其正常工作。知道是什么导致了这个,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:11)

X-Frame-options响应标头用于阻止clickjacking。默认情况下,Liferay中的所有请求都将此标头设置为DENY以用于所有外部URL,即Liferay网站不能iFramed或嵌入iframe中除具有相同域的Liferay网站之外的任何其他网站。

假设您使用的是Liferay版本6.2.x,您可以通过两种方法让Liferay成为iFramed:

方法-I

禁用属性http.header.secure.x.frame.options到portal-ext.properties:

http.header.secure.x.frame.options=false

默认情况下,这是true

方法-II(推荐)

将网页的网址添加到portal-ext.properties中的媒体资源http.header.secure.x.frame.options.*,以便只能将该特定网址嵌入iframe而不是整个网站。

* 应替换为任何正整数值。

请注意,请注意每个网址都在一个单独的属性中:

http.header.secure.x.frame.options.1=/web/guest/home
http.header.secure.x.frame.options.2=/myPortletPageToBeIframed
http.header.secure.x.frame.options.10=/group/mySite/MyPageInIframe

建议使用第二种方法,因为它只允许某些页面使用iFramed,从而降低其他页面上点击劫持的风险。