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

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:

方法-I

禁用http.header.secure.x.frame.optionsportal-ext.properties 属性:

http.header.secure.x.frame.options=false
Run Code Online (Sandbox Code Playgroud)

默认情况下这是true.

方法-II(推荐)

将页面的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,从而降低其他页面上点击劫持的风险.