2

我的简单代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script src="jquery.js"></script>
<script type="text/javascript">
$(function(){
$.get("http://www.facebook.com",function(data){
alert(data);});

});</script></head>

 <body>
</body>
</html>

它应该提醒 facebook 内容,但它没有这样做

更新

现在我正在使用 php

<?php
 $str=file_get_contents("http://www.facebook.com");
    echo strip_tags(htmlspecialchars($str)); 
?>

为什么它不删除标签?

4

4 回答 4

4

如果您在服务器端使用 php。您可以使用以下方法创建一个返回 html 的服务:

$html = file_get_contents('http://www.facebook.com');

ASP.NET:

using(WebClient client = new WebClient()) 
{
    string html = client.DownloadString("http://www.facebook.com'");
}
于 2012-05-24T12:25:35.007 回答
4

我猜你刚刚因为Same Origin Policy被浏览器阻止了。查看控制台,如果您尝试执行此操作,您将收到警告。

如果没有跨域资源共享或服务器端代理,您将无法读取跨域页面。

据我所知,这样做的唯一方法是让您的域上的服务器脚本读取外部页面(wget,curl,fopen,还有什么)并将其返回到您的页面。您的服务器充当读取远程页面的“桥梁”。

您可能听说过没有跨域限制的JSONP ,但您通过这种方式检索的不是 HTML/页面,而是脚本。

于 2012-05-24T12:23:48.627 回答
3

由于同源策略,除非使用 JSONP,否则您不能从外部网站请求内容。但是,因为您请求的是 HTML,所以这不适用。

另一种方法是创建一个服务器端代理来获取 facebook.com 主页的 HTML,然后将该本地 URL 提供给该$.get()函数。

于 2012-05-24T12:24:01.903 回答
0

您只能在同一个域中发出 ajax 请求

但是您可以使用 JSONP 进行跨域请求
http://en.wikipedia.org/wiki/JSONP

参考这篇关于 ibm developerworks 的文章:http:
//www.ibm.com/developerworks/library/wa-aj-jsonp1/

于 2012-05-24T12:32:11.430 回答