1

当我在引用外部网页的 JSF 页面中使用 IFrame 时。页面未呈现。

JSF 代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">

<f:loadBundle basename="resources.application" var="msg" />
<h:head>
<title>E-Payment Gateway</title>
<link type="text/css" rel="stylesheet"
    href="${facesContext.externalContext.requestContextPath}/resources/css/main_style.css" />

</h:head>

<h:body>
<f:view>
     <div style="height: 200px;">

    </div> 
    <div class="centercol" style="margin: auto;position: relative">
        <iframe
            src="http://google.com">
        </iframe>
    </div>
</f:view>
</h:body>

HTML 结果

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>

<title>E-Payment Gateway</title>

<link type="text/css" rel="stylesheet" href="/EPG_WEB_CUST/resources/css/main_style.css" /></head><body>
     <div style="height: 200px;">

    </div> 
    <div class="centercol" style="margin: auto;position: relative">
        <iframe src="http://google.com">
 #document<html><head></head><body></body></html></iframe>
    </div></body></html>

我不知道是什么导致了这个问题,它总是显示空的渲染 HTML

4

1 回答 1

8

问题不在于 JSF 或防火墙。

您尝试http://google.com在不同域中的 iFrame 中使用。这是一个潜在的安全威胁,它被称为跨站点脚本(XSS)。您的问题的答案在于 google 的 http 标头。

为了避免 XSS 攻击,google 添加了以下 headers。

X-FRAME-OPTIONS
X-XSS-PROTECTION

换句话说,由于上述标头,您无法在不同域中的 iFrame 内访问它们,请在此处了解有关 XSS和有关同源策略的更多信息

在此处输入图像描述

希望这能解决您的问题。

于 2014-05-23T09:07:49.677 回答