我有一个有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端的设置或任何代码才能使其正常工作。知道是什么导致了这个,我该如何解决这个问题?
答案 0 :(得分:11)
X-Frame-options
响应标头用于阻止clickjacking。默认情况下,Liferay中的所有请求都将此标头设置为DENY
以用于所有外部URL,即Liferay网站不能iFramed或嵌入iframe中除具有相同域的Liferay网站之外的任何其他网站。
假设您使用的是Liferay版本6.2.x,您可以通过两种方法让Liferay成为iFramed:
禁用属性http.header.secure.x.frame.options
到portal-ext.properties:
http.header.secure.x.frame.options=false
默认情况下,这是true
。
将网页的网址添加到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,从而降低其他页面上点击劫持的风险。