加载来自Facebook的跨源图像

问题描述:

我正在构建经常从Facebook加载图片的网站。 我一直在试图使用从Mozilla本教程是本地优秀作品,但是当我去住,Facebook并没有让我进入这样的图像和回报:加载来自Facebook的跨源图像

“跨源图像负荷由十字否认-Origin资源共享策略“。

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

您可能必须拥有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); 

?> 
+0

谢谢,但你能解释API密钥在这里可以如何帮助吗?我的意思是,除非CORS被Facebook启用,否则通常不允许从远程域(这里是该图像的像素)访问内容。你的链接只是谈论图形API,但这工作得很好。问题是我试图使用localStorage.setItem下载图像,因此我认为我必须对img.crossOrigin执行一些操作,否则它根本不起作用。 但是,如果支持CORS,我无法在网上找到任何东西。 –

+0

如果您想访问您可以从浏览器访问的跨域内容,请使用PHP中的CURL并使用它调用该网站。我将用简单的php curl脚本更新答案。 – stamat

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

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