0

在以下代码中,当您按下提交时,将iframe加载textbox. 这不是违反not allowing cross domain request吗?我正在使用 Mozilla 14.0。

<!DOCTYPE html>
<head>
<script>
function myFunction()
{
document.getElementById("site").src=document.getElementById("web").value;
}
</script>
</head>
<body> 
<input id="web" type="text" name="user">
<input type="submit" value="Submit"  onclick="myFunction()"> <br/>
<iframe id="site" src="" width="1200" height="1200"></iframe>

</body>
</html>
4

4 回答 4

1

不,这不是违规行为,这是完全有效的。

同源策略可防止跨不同域的页面访问方法和属性。它还可以防止修改包含的网页。但并不妨碍您将它作为一个整体包含进来(甚至以有限的方式与它互动)。

基本上,此政策可防止网站 A 在网站 B 上冒充用户。

例子

想象一下您访问了您的银行帐户 (bank.com)。当您登录时,银行网站会为您生成一个“用户环境”,让您可以访问受限内容。此外,它还允许您通过 http 请求(表单提交或 Ajax 请求)对您的银行帐户进行修改。

该网站信任您,因为您已经证明您就是您所说的那个人,并且您信任该网站,因为您知道,出于所有意图和目的,当您处于安全环境中时,除了您之外,没有人可以与您的银行网站进行交互.

现在假设您在另一个标签 (evilweb.com) 上访问了一个恶意网站,该标签与您的银行网站有一个 iframe。如果没有此政策,evilweb.com 可能会伪装成您,访问受限区域,读取 DOM 信息(银行帐号等),甚至与之交互,单击“转账”按钮并清理您的银行账户。该 iframe 甚至可以被隐藏。

然而,没有什么能阻止evilweb.com “下载”bank.com 的公共内容,就像我没有访问凭据时也没有什么能阻止我访问公共网站一样。

所以......冒充用户与发出请求不同

因此,基本上, evilweb.com 可以直接向 bank.com 提出请求,但它不能搭载您并代表您提出请求。

于 2013-02-08T16:38:48.153 回答
0

不会。没有数据在一个域和另一个域之间传输。

从安全的角度来看,如果您将框架导航到的 URL 来自用户输入或任何其他来源,这完全无关紧要。

如果你试图将iframe内部的数据拉到外部世界或操纵 iframe 的内容,那将违反同源策略并且会失败。

于 2013-02-08T16:13:45.520 回答
0

不,可以加载页面。但是,您将无法访问 iframed 跨域文档的内容。

于 2013-02-08T16:14:26.137 回答
0

JavaScript 没有对外部页面做任何事情,因此不存在跨域问题。你的代码所做的就是调用 iframe 来加载一个 url。

于 2013-02-08T16:15:05.830 回答