2013-10-30 86 views
0

我想获得一些数据在这个网站http://www.amf.asso.fr/,特别是在这种类型的页面http://www.amf.asso.fr/annuaire/index.asp?refer=commune&dep_n_id=45&NUM_INSEE=45001。为此我使用这个代码:

$.get('myproxy.php?url=http://www.amf.asso.fr/annuaire/index.asp?refer=commune&dep_n_id=45&NUM_INSEE=45001', function (a) { 
// do something 
}); 

,在这里我的代理文件:

<?php 
header('Access-Control-Allow-Origin: *'); 
if (isset($_GET['url']) && preg_match('`^http://`', $_GET['url'])) { 
echo file_get_contents($_GET['url']); 
} 
?> 

我得到200个状态

Request URL: myproxy.php?url=http://www.amf.asso.fr/annuaire/index.asp?refer=commune&dep_n_id=45&NUM_INSEE=45001 
Request Method:GET 
Status Code:200 OK 

但没有内容可言的响应。我不是专家,所以我不明白为什么,因为它在其他网站上完美地工作了几次。网页上有什么东西阻止我获取内容?我错过了什么?感谢您的帮助/见解。

+0

最有可能说访问的方式,当远程站点在所有返回的任何内容。 –

+0

它的确如此,例如基本的URL。但我认为你对我正在寻找的页面的权利。你知道有没有办法? –

+0

您可以设置特定的标头,这会导致您的请求模仿浏览器请求,但这一切都取决于该服务器正在查找的内容。 –

回答

1

由于amf.asso.fr网站上的跨域安全性,您可能无法执行此操作。

由于这篇文章描述:jQuery $.get() function succeeds with 200 but returns no content in Firefox

尝试使用卷曲,而不是:

$curl_handle=curl_init(); 
curl_setopt($curl_handle, CURLOPT_URL,$_GET['url']); 
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name'); 
$query = curl_exec($curl_handle); 
curl_close($curl_handle); 

echo $query; 
+0

谢谢,的确我应该补充说,代码在远程站点上工作。如果我使用你的PHP,我得到这个网站的错误500,同样的代码预览工作的网站。 –

+1

我不认为cors与此有任何关系,他没有用javascript做出一个跨域请求。 –

+0

如果你做一些简单的事情会发生什么,如<?php echo'test'; ?>到你的PHP站点?不要设置标题或任何复杂的东西。你可以在浏览器中加载该页面并获得200 OK吗? – brandonscript

相关问题