2014-01-10 28 views
0
下載網站的favicon.ico

我試過的Ajax:通過JavaScript

$.ajax({ 
    type : "GET", 
    url : "http://getfavicon.appspot.com/http://www.google.com", 
    success : function(result) { 
     // use the .ico result somewhere 
    } 
}); 

它給我的錯誤:

XMLHttpRequest cannot load http://getfavicon.appspot.com/http://www.google.com. No 
'Access-Control-Allow-Origin' header is present on the requested resource. Origin 
'http://localhost' is therefore not allowed access. 

於是,我讓我的Apache服務器上CORS,卻發現我下載的網站需要有CORS允許。如果我明白這一點,我不能通過javascript,圖像,文本,什麼都不能從外部域下載任何東西?

我試圖通過調用我的web服務器PHP腳本通過Ajax而不是去解決這個:

var domain = "www.google.com"; 
$.ajax({ 
    type : "POST", 
    url : "php/fetchIcon.php", 
    data : { 
    'domainName' : domain 
    }, 
    success : function(result) { 
    // use the .ico result somewhere 
    } 
}); 

fetchIcon.php:

$domainName = false; 
if(isset($_POST['domainName'])){ 
    $domainName = $_POST['domainName']; 
} 
echo file_get_contents("http://getfavicon.appspot.com/http://".$domainName, true); 

在阿賈克斯成功結果我回來了圖像的二進制代碼,但它似乎以某種方式打破。

  1. 如果我想顯示的.ico文件,我可以這樣做: 「的document.getElementById(」 IMG 「)。SRC =結果;」 ?在我的項目中,我想使用「THREE.ImageUtils.loadTexture(result);」。但對於這個問題來說這太過分了。

  2. 我需要使用Base64編碼/解碼嗎?

  3. 有沒有更容易的方法或黑客做到這一點,只是在沒有PHP的Javascript?

在此先感謝。

+1

似乎是正確的,你得到的二進制代碼。你還期望什麼?不要以爲你只能用JS做。 – putvande

+0

我沒有想到別的。我只想知道如何使用該文件或顯示它 – user2010496

+2

這是否工作:''(確保將'$ _POST'更改爲'$ _GET')。讓我們保持良好和簡單。這裏不需要AJAX。 –

回答

1

這爲我工作,由火箭危險品回答:

fetchIcon.php:

$domainName = false; 
if(isset($_GET['domainName'])){ 
    $domainName = $_GET['domainName']; 
} 
echo file_get_contents("http://getfavicon.appspot.com/http://".$domainName, true); 

最簡單的方式來顯示它的工作沒有CORS限制:

 <img src="fetchIcon.php?domainName=www.google.com" /> 

否則這會已經足夠:

 <img src="http://getfavicon.appspot.com/http://www.google.com"/> 

或我想要加載一個新的紋理統一在三個。JS,在JavaScript中,我不停的問題之外,但也許有人遇到同樣的問題,因爲我:

iconUniform.map.value = THREE.ImageUtils.loadTexture("fetchIcon.php?domainName=www.google.com"); 
0

我不確定你的意思是下載如下載到文件,但這會在PHP中完成。如果你需要它的路徑返回到您的JS功能你可以稱之爲AJAX風格...

$url = 'http://getfavicon.appspot.com/http://www.google.com'; 
$img = 'icons/favicon.ico'; 
file_put_contents($img, file_get_contents($url)); 
1

嗯,我想你是使它更復雜的簡單我試過下面的代碼和它的工作了我

 <img id='favicon' src='http://getfavicon.appspot.com/http://www.google.com'/> 

那麼,爲什麼即使你想改變形象的soruce您使用Ajax請求,你可以很容易地用JavaScript做

document.getElementById('favicon').src="address"; //address can contain new source 
+0

事情是,我需要在JavaScript上下文中的圖標,然後CORS成爲一個問題。這迫使我使用PHP並讓Web服務器成爲該文件的代理。 – user2010496