如何在另一个网页中显示网页?

时间:2013-04-26 03:06:36

标签: javascript jquery spring iframe

我正在尝试使用spring-security框架创建一个Web应用程序“A”。在认证之后,它将把用户带到一个页面,其中在窗口内显示另一个web-app“B”(托管在相同/其他服务器上)(使用iframe可实现)。主网络应用程序“A”从用户获取web-app“B”的链接地址,因此web-app“B”应该是动态可变的。

我创建了具有CAS身份验证的网络应用“A”。验证后,它使用iframe在窗口中显示web-app“B”,但是当我尝试使用jQuery和Javascript动态更改网页“B”时,它会失败。

如果有人能帮助我,我将不胜感激。首先,让我知道我是否做得对,否则建议我正确的步骤。如果有更好的方法可以实现同样的目的,也请告诉我。请参阅下面的代码。

谢谢, 萨钦

<!DOCTYPE html>
<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
        $(document).ready(function(){
            $("button").click(function(){
                $("#serverurl").attr("src", $("#Link").val());
            });
        });
    </script>
</head>

<body>
<h1>Secure Page</h1>
<p>This is a protected page. You can get to me if you've been remembered,
    or if you've authenticated this session.</p>

<p><a href="../">Home</a>
<p><a href="../j_spring_security_logout">Logout</a>

<p>Enter URL: <input type="text" id="Link" value="www.google.com"></p>
<button>Show webpage</button>

<div><iframe src="http://w3school.com" id="serverurl" width="800" height="600"></iframe></div>
</body> </html>

1 个答案:

答案 0 :(得分:2)

我在jsFiddle上重新创建了你的例子:

http://jsfiddle.net/eZRTw/1/

所以,你有两个问题:

  1. 您的输入值缺少http://。因此,您的浏览器会尝试打开相对路径,例如:http://yourserver.com/www.google.com

  2. 如果您打开浏览器控制台并点击“显示网页”,则会看到如下错误:Refused to display 'https://www.google.com/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.。这是因为谷歌服务器sends a header要避免clickjacking attacks

  3. 如果您要在iFrame中显示的所有网站都没有像谷歌一样发送X-Frame-Options,只需修复第一项,一切都会好的。