我尝试过Ajax:
$.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,图片,文字,诸如此类从外部域名下载任何内容?
我尝试通过ajax在我的网络服务器上调用php脚本来解决这个问题:
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);
在Ajax成功结果中,我得到了图像的二进制代码,但它似乎在某种程度上被打破了。
如果我想显示.ico文件,可以执行以下操作: “document.getElementById(”img“)。src = result;” ?在我的项目中,我想使用“THREE.ImageUtils.loadTexture(result);”。但对于这个问题来说,这有点太多了。
我是否需要使用Base64编码/解码以及如何使用?
有没有更简单的方法或黑客只在没有PHP的Javascript中做到这一点?
提前致谢。
答案 0 :(得分:1)
这对我有用,Rocket Hazmat回答:
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"/>
或者我想在THREE.js中加载一个新纹理制服的方式,在javascript中,我一直在问题之外,但也许有人遇到了和我一样的问题:
iconUniform.map.value = THREE.ImageUtils.loadTexture("fetchIcon.php?domainName=www.google.com");
答案 1 :(得分:1)
嗯,我认为你让它变得更复杂,我尝试了下面的代码,它很适合我
<img id='favicon' src='http://getfavicon.appspot.com/http://www.google.com'/>
那你为什么要使用ajax请求,即使你想改变图像的图像,你可以使用javascript轻松完成
document.getElementById('favicon').src="address"; //address can contain new source
答案 2 :(得分: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));