Tec*_*Pro 6 iframe liferay liferay-6
我有一个有Portlet的Liferay页面.我试图将此页面作为iframe嵌入到外部网站中,而不是在Liferay中,但是它在控制台中给出错误:
拒绝在框架中显示" https://example.com ",因为它将"X-Frame-Options"设置为"SAMEORIGIN"
我正在使用如下所示的html iframe标签来嵌入它:
<iframe allowfullscreen="" frameborder="0" height="400" src="https://example.com" style="border:0" width="500"></iframe>
Run Code Online (Sandbox Code Playgroud)
在URL结束后这个线程我试图把"&输出=嵌入",但它没有工作:拒绝在框架中显示,因为它设置"X-框架-选项"到"SAMEORIGIN"
我不确定是否需要更改Liferay端的设置或任何代码才能使其正常工作.知道是什么导致了这个,我该如何解决这个问题?
Pra*_*h K 11
X-Frame-options
响应头用于防止点击劫持.默认情况下,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
Run Code Online (Sandbox Code Playgroud)
默认情况下这是true
.
将页面的URL添加到属性http.header.secure.x.frame.options.*
中,portal-ext.properties
以便只能将该特定URL嵌入iframe而不是整个站点.
哪里*
应该被任何正整数值替换.
请注意,请注意每个URL都在一个单独的属性中:
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
Run Code Online (Sandbox Code Playgroud)
建议使用第二种方法,因为它只允许某些页面使用iFramed,从而降低其他页面上点击劫持的风险.