获取html跨站点,显示它并获取元素值

时间:2010-12-08 21:25:57

标签: php javascript ajax cross-domain

我需要从aspx站点获取完整的输出。当用户离开时,我将保存cookie中某些特定元素的内容。问题是aspx是在我无法访问的域上。我希望输出的行为与iframe一样,因此链接需要是可点击的,但不会离开我的页面。

我认为使用PHP代理的AJAX或我可以修改内容的iframe。 这可能吗? 如果可能并且它涉及服务器端代码,我想知道是否有任何支持完整代码的免费Web主机(例如,几乎每个免费的Web主机都有PHP的safe_mode)。

编辑:我想显示此页面:School scheme。 URL不会改变,它只是向服务器发送请求(通过JavaScript思考)。当用户离开时,我将看到选择框中的内容id =“TypeDropDownList”以及选择框中的内容id =“ScheduleIDDropDownList”。

当用户返回我的页面时,我会通过这样的网址将这些值打印到页面"http://www.novasoftware.se/webviewer/(S(lv1isca2txx1bu45c3kvic45))/design1.aspx?schoolid=27500&code=82820&type=" + type + "&id=" + id + "

在我发布之前,我在000webhost上尝试了几个php代理脚本。 例如:

<?php
ob_start();

function logf($message) {
  $fd = fopen('proxy.log', "a");
  fwrite($fd, $message . "\n");
  fclose($fd);
}

?>
<?
$url = $_REQUEST['url'];
logf($url);
$curl_handle = curl_init($url);
curl_setopt($curl_handle, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, "Owen's AJAX Proxy");

$content = curl_exec($curl_handle);
$content_type = curl_getinfo($curl_handle, CURLINFO_CONTENT_TYPE);
curl_close($curl_handle);
header("Content-Type: $content_type");
echo $content;
ob_flush();
?>

但它返回警告:curl_setopt():提供的参数不是第16行/home/a5379897/public_html/ajax-proxy.php中的有效cURL句柄资源

我试图联系他们,因为他们说他们已经启用了cURL,但他们还没有回复。

我认为当用户第一次访问该页面时,可以只显示两个选择框。当选择选项时,它将通过传递“http://www.novasoftware.se/webviewer/(S(lv1isca2txx1bu45c3kvic45))/design1.aspx?schoolid=27500&code=82820&type=”使iframe显示正确的页面+ type +“&amp; id =”+ id +“到src属性。 问题是我需要检索选择框,我会遇到同样的问题。

3 个答案:

答案 0 :(得分:2)

您需要使用PHP,因为Javascript不允许跨域请求。您的PHP代码将直接获取客户端所需的页面,处理它(使用原始href链接到的页面的get变量将链接的href更改为您的页面)。当他们点击链接时,他们将被发送到他们现在所在的页面,但页面将获取新页面并返回该页面(也处理该页面),依此类推。

000webhost是一个不错的免费虚拟主机,可以让你完成PHP的大部分功能而且不会在你的网站上放置广告。

答案 1 :(得分:1)

要将整个aspx输出作为要操作的字符串,可以使用file_get_contents(http://yoursite.com/yourpage.aspx);

为获得最佳效果,请通过http。

打开一个流作为上下文
<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>

答案 2 :(得分:0)

感谢greg我可以创建这个获取页面的脚本。

<html>
<head>
</head>
<body>
<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);
$host = 'http://www.novasoftware.se/webviewer/(S(bkjwdqntqzife4251x4sdx45))/';
$url = '/design1.aspx?schoolid=27500&code=82820&type=3&id={7294F285-A5CB-47D6-B268-E950CA205560}';
$changetothis='src="'.$host;
// Open the file using the HTTP headers set above
$file = file_get_contents($host.$url, false, $context);
$changed = str_replace('src="', $changetothis,$file);
echo $changed;

?>
</body>
</html>