2012-12-20 63 views
1

我正在構建經常從Facebook加載圖片的網站。 我一直在試圖使用從Mozilla本教程是本地優秀作品,但是當我去住,Facebook並沒有讓我進入這樣的圖像和回報:加載來自Facebook的跨源圖像

「跨源圖像負荷由十字否認-Origin資源共享策略「。

有什麼辦法解決這個問題(這不涉及緩衝圖像我自己的服務器)?

回答

-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); 

?> 
+0

謝謝,但你能解釋API密鑰在這裏可以如何幫助嗎?我的意思是,除非CORS被Facebook啓用,否則通常不允許從遠程域(這裏是該圖像的像素)訪問內容。你的鏈接只是談論圖形API,但這工作得很好。問題是我試圖使用localStorage.setItem下載圖像,因此我認爲我必須對img.crossOrigin執行一些操作,否則它根本不起作用。 但是,如果支持CORS,我無法在網上找到任何東西。 –

+0

如果您想訪問您可以從瀏覽器訪問的跨域內容,請使用PHP中的CURL並使用它調用該網站。我將用簡單的php curl腳本更新答案。 – stamat

0

有什麼辦法來解決這個問題(不涉及緩衝圖像我自己的服務器)?

不需要。圖像需要在您控制的服務器上(或者您對任何人都有足夠的影響力來授予權限)。您無法在Facebook的服務器上設置CORS標頭,因此在託管圖片時,圖片無法跨域訪問。