通过Javascript下载网站的favicon.ico

我尝试过Ajax:</ p>

  $ .ajax(  {
type:“GET”,
url:“http://getfavicon.appspot.com/http://www.google.com",
success:function(result){
//使用 .ico结果
}
});
</ code> </ pre>

这给了我错误:</ p>

  XMLHttpRequest 无法加载http://getfavicon.appspot.com/http://www.google.com。 请求的资源上没有
'Access-Control-Allow-Origin'标头。 Origin
'http:// localhost'因此不允许访问。
</ code> </ pre>

所以我尝试在我的Apache服务器上允许CORS,但是找到了我的网站 从需要下载也允许CORS。 如果我理解这一点,我无法通过javascript,图像,文本等来从外部域下载任何内容?</ p>

我试图通过在我的网络服务器上调用php脚本来解决这个问题 通过ajax代替:</ p>

  var domain =“www.google.com”; 
$ .ajax({
type:“POST”,
url:“php /fetchIcon.php",nn data:{
'domainName':domain
},
success:function(result){
//在某处使用.ico结果
}
}); \ n </ code> </ pre>

fetchIcon.php:</ p>

  $ domainName = false; 
if(isset($ _ POST ['domainName' ])){
$ domainName = $ _POST ['domainName'];
}
echo file_get_contents(“http://getfavicon.appspot.com/http://”。$ domainName,true);
< / code> </ pre>

在Ajax成功结果中,我得到了图像的二进制代码,但它似乎在某种程度上被破坏了。 </ p>


  1. 如果我想显示.ico文件,我可以执行以下操作:
    “document.getElementById(”img“)。src = result ;” ? 在我的项目中,我想使用“THREE.ImageUtils.loadTexture(result);”。 但这对于这个问题来说太过分了。</ p> </ li>

  2. 我是否需要使用Base64编码/解码以及如何使用? </ p> </ li>

  3. 在没有PHP的Javascript中,是否有更简单的方法或黑客攻击? </ p> </ li>
    </ ol>

    提前致谢。</ p>
    </ div>

展开原文

原文

I've tried Ajax:

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

which gives me the error:

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.

So I tried to allow CORS on my Apache server, but found out the site I download from needs to have CORS allowed too. And if I understand this right I can't download anything from an external domain through javascript, images, text, whatnot?

I tried to go around this by calling a php script on my webserver through ajax instead:

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

In the Ajax success result I get back the image's binary code, but it seems broken in some way.

  1. If I want to display the .ico file, can I do something like: "document.getElementById("img").src = result;" ? In my project I want to use "THREE.ImageUtils.loadTexture(result);". But that's a bit too much for this question.

  2. Do I need to use Base64 encoding/decoding and how?

  3. Is there an easier way or hack to do it just in Javascript without PHP?

Thanks in advance.

dtbiszu7724
dtbiszu7724 因为您无法使用<img/>标记发送POST请求。URL中的查询字符串是GET。
接近 7 年之前 回复
doulanli6146
doulanli6146 非常感谢RocketHazmat。这比我想象的容易。在这里,为什么不POST?
接近 7 年之前 回复
ds3422222
ds3422222 这是否有效:<imgsrc=“fetchIcon.php?domainName=www.google.com”/>(确保将$_POST更改为$_GET)。让我们保持简洁。这里不需要AJAX。
接近 7 年之前 回复
dongxiji0687
dongxiji0687 我没想到别的。我只想知道如何使用该文件或显示它
接近 7 年之前 回复
drkenap147751
drkenap147751 似乎你得到了二进制代码。你还期待什么?不要以为你只能用JS做到这一点。
接近 7 年之前 回复

3个回答



这对我有用,由Rocket Hazmat回答:</ p>

fetchIcon.php:</ p >

  $ domainName = false; 
if(isset($ _ GET ['domainName'])){
$ domainName = $ _GET ['domainName'];
}
echo file_get_contents (“http://getfavicon.appspot.com/http://".$domainName,true);
</ code> </ pre>

显示无需CORS即可使用的最简单方法 限制:</ p>

 &lt; img src =“fetchIcon.php?domainName = www.google.com”/&gt; 
</ code> </ pre>
\ n

否则这就足够了:</ p>

 &lt; img src =“http://getfavicon.appspot.com/http://www.google.com  “/&GT;

</ code> </ pre>

或者我想在THREE.js中加载一个新纹理制服的方式,在javascript中,我一直在问题之外,但也许有人遇到同样的问题 像我这样的问题:</ p>

  iconUniform.map.value = THREE.ImageUtils.loadTexture(“fetchIcon.php?domainName = www.google.com”); 
</ code > </ pre>
</ div>

展开原文

原文

This worked for me, answered by Rocket Hazmat:

fetchIcon.php:

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

Simplest way to display that it worked without CORS restrictions:

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

Otherwise this would have been sufficient:

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

or the way I wanted to load a new texture uniform in THREE.js, in javascript, which I kept outside the question, but maybe someone run into the same problem as me:

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



嗯,我认为你让它变得更复杂,我尝试了下面的代码,它对我起作用了</ p>
\ n

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

</ code> </ pre>

所以为什么你要使用ajax请求,即使你想改变图像的图像,你也可以使用javascript轻松完成</ p>

  document.getElementById('favicon')。src =“address”;  //地址可以包含新的源
</ code> </ pre>
</ div>

展开原文

原文

Well i think you are making it more complex it simple i tried the below code and it worked for me

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

so why are you using ajax request even if you want to change the soruce of the image you can do it easily with javascript

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

dongpu8935
dongpu8935 问题是,我需要javascript上下文中的图标,然后CORS成了问题。 这迫使我使用php并让网络服务器成为该文件的代理。
接近 7 年之前 回复



我不确定你是否意味着下载下载到文件</ em>,但这样做会 用PHP。 如果你需要它来返回JS函数的路径,你可以调用这个AJAX样式... </ p>

  $ url ='http://getfavicon.appspot.com/http  ://www.google.com'; 
$ img ='icons / favicon.ico';
file_put_contents($ img,file_get_contents($ url));
</ code> </ pre>
</ DIV>

展开原文

原文

I'm not sure if you mean download as in download to a file, but this would do it in PHP. You could call this AJAX style if you need it to return the path to your JS function...

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐