2013-04-26 223 views
1

我想创建一个使用弹簧安全框架的网络应用程序“A”。认证后,它将使用户进入一个页面,其中另一个Web应用程序“B”(托管在相同/其他服务器)显示在窗口内(使用iframe可实现)。主Web应用程序“A”从用户处获取Web应用程序“B”的链接地址,因此Web应用程序“B”应该是动态可变的。如何获取在另一个网页中显示的网页?

我已经创建了具有CAS认证的网络应用“A”。认证后,它使用iframe在窗口内显示Web应用程序“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> 
+0

那么你试过的代码是什么 – Satya 2013-04-26 03:11:14

+0

@Satya:请参阅更新的消息。 – Sachin 2013-04-26 04:00:43

+0

假设网站A已经被入侵,并且您将网站B加载到iframe中。网站A上的Javascript记录您提交的任何内容(例如:信用卡),将网站B更改为类似的网站C并提交该信息。 – 2013-04-26 04:19:16

回答

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

如果你想要在iFrame来显示网站不发送X-Frame-Options,像谷歌,刚修好的第一个项目,一切都会好起来的。

+0

谢谢Renan,它似乎在jsFiddle上工作。我一定会尝试这个,并让它知道它是否有效。我感谢您的帮助。 – Sachin 2013-04-26 05:23:35

相关问题