从Facebook加载跨源图像

时间:2012-12-20 13:55:56

标签: javascript facebook facebook-graph-api cors

我正在建立一个频繁加载Facebook图片的网站。 我一直在尝试使用Mozilla的这个教程,它在本地工作正常,但是当我上线时,facebook不允许我访问这样的图像并返回:

“跨源资源共享策略拒绝跨源图像加载。”

有没有办法解决这个问题(不涉及缓存我自己的服务器的图像)?

2 个答案:

答案 0 :(得分:0)

  

有没有办法解决这个问题(不涉及缓存我自己的服务器的图像)?

没有。图像需要位于您控制的服务器上(或者您对授予权限的任何人都有足够的影响力)。您无法在Facebook的服务器上设置CORS标头,因此在托管图像时,图像将无法跨域访问。

答案 1 :(得分:-1)

您可能必须拥有自己的API密钥才能执行此操作。咨询https://developers.facebook.com/docs/reference/api/

如果要访问可以从浏览器访问的跨域内容,请使用PHP中的CURL并使用它调用该站点。我将使用简单的php curl脚本更新答案。你可以用它来下载图像,它就像一个代理:)

<?php

$url = $_GET['url'];

function request($url) {  
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, $url);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 3);
    curl_setopt($c, CURLOPT_TIMEOUT, 5);
    $response = curl_exec($c);
    $responseInfo = curl_getinfo($c);
    curl_close($c);
    if (intval($responseInfo['http_code']) == 200) {
        return $response;
    } else {
        return false;
    }
}

echo request($url);

?>