在页面中加载页面

时间:2009-02-19 11:10:35

标签: php javascript jquery html ajax

我是PHP和Javascript的初学者..

我找到了http://cmichaelis.whsites.net/whblog/jquery-extjs-1/example2

的链接

在其中有一个代码说:

function addPanel(location)
{
 tabpanel.add({
       autoLoad: {url: location},
       title: 'More Information...',
       closable:true,
       autoScroll:true
 }).show();
}

使用方法:

<a href="javascript:void(0);"
   onclick="addPanel('loadpage.php?a=http://www.google.com')">
   head over to Google
</a>

我想问的是.. loadpage.php的代码是什么?

2 个答案:

答案 0 :(得分:1)

根据其他答案的建议,PHP页面不会回显google.com的内容。它输出一个指向Google的iframe:

<iframe src="http://www.google.com" width="100%" height="100%" frameborder="no"></iframe>

答案 1 :(得分:0)

使用file_get_contents似乎可以使用loadpage.php来回显www.google.com的内容。

<强> loadpage.php

<?php
    // Simplified output - should sanitise $_REQUEST params etc first..
    echo file_get_contents($_REQUEST['a']);
?>

loadpage实际上充当代理,允许您的javascript调用不属于您自己域的网页。

正如@annakata在评论中指出的那样,上面的代码原样是非常危险的。代码说明了代理文件背后的基本思想 - 在生产中,此文件需要确保$_REQUEST参数已经过清理,例如只接受来自白名单的值。

same origin policy是javascript的一个安全元素,可以阻止您使用javascript将内容从域外拉到您的网页上。

有些网站通过在自己的服务器上调用代理页面(在此实例中为loadpage)来解决这个问题,这实际上只是打印出目标网址的内容。由于此代理页面位于您的服务器上,因此会绕过相同的原始安全问题,并仍然可以从其他域提供页面内容 - 此处www.google.com

<小时/> 哎呀,我有点愚蠢地没有RTFA,只是问题中的代码,并假设它可以做什么。关于q中链接的页面实际正在做什么,@andynormancx正确答案。