【问题标题】:Can I get an image from a website i don't own using jquery?我可以使用 jquery 从我不拥有的网站获取图像吗?
【发布时间】:2020-07-02 12:22:21
【问题描述】:

我想获取另一个网站 DOM 并通过它搜索要下载的图像,但这给了我 CORS 政策错误,我想知道一些其他方法来做到这一点

  $.get({
    url: "https://www.example.com",
    method: "get",
    success: function(data) {
      var html = $.parseHTML(data),
        img = $(html).find("img"),
        len = img.length;
      if (len > 0) {
        var src = img.attr("src");
      } else {
        console.log("Image not found");
      }
      console.log(src);
    }
  });

原帖:

我想从另一个网站(我不拥有)下载一张图片,我可以查看这个网站并公开说图片,但是尝试使用 URL 执行 $.get() 会给我一个 CORS 政策错误,是有没有办法真正做到这一点?

【问题讨论】:

  • 不,除非第三方站点在响应中包含 CORS 标头,否则无法在客户端 JS 中执行此操作。鉴于您所说的错误,他们没有这样做。解决方法是改为在服务器端进行
  • 所以....我该怎么做?
  • 这完全取决于您使用的服务器端平台

标签: javascript jquery cross-domain


【解决方案1】:

您可以在服务器上使用cURL 发送请求。或者,您可以使用您使用的某种编程语言(并且未在您的问题中指定)来发送请求。示例:

<?php
$img[]='http://images.rottentomatoescdn.com/images/redesign/poster_default.gif';

foreach($img as $i){
echo $i;
    save_image($i);
    // if(getimagesize(basename($i))){
        // echo '<h3 style="color: green;">Image ' . basename($i) . ' Downloaded OK</h3>';
    // }else{
        // echo '<h3 style="color: red;">Image ' . basename($i) . ' Download Failed</h3>';
    // }
}

//Alternative Image Saving Using cURL seeing as allow_url_fopen is disabled - bummer
function save_image($img,$fullpath='basename'){
    if($fullpath=='basename'){
        $fullpath = basename($img);
    }
    $ch = curl_init ($img);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    $rawdata=curl_exec($ch);
    curl_close ($ch);
    if(file_exists($fullpath)){
        unlink($fullpath);
    }
    $fp = fopen($fullpath,'x');
    fwrite($fp, $rawdata);
    fclose($fp);
}
?>

取自这里:https://curl.haxx.se/docs/httpscripting.html

【讨论】:

  • 对,这很酷,但我实际上如何获取图像 URL?我的问题可能措辞错误,哈哈。给我 CORS 错误的代码是这样的:``` $.get({ url: "url", success: function(data) { var html = $.parseHTML(data), img = $(html). find("article.comic img, article.comic * img"), len = img.length; if (len > 0) { var src = img.attr("src"); // 获取图片的src console.log (src); } }); ``` 我正在尝试获取其他网站的 DOM 并通过它进行搜索以找到 img。
  • @Vawlpe 您可以向其他站点发送 GET 请求并将其呈现为项目中页面的一部分,但将以下 Javascript 放入页面正文中:alert([...document.querySelectorAll('img').values()].map((img) =&gt; img.src).join(', '))。这将提醒页面上所有图像的所有位置,以逗号分隔。
猜你喜欢
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
相关资源
最近更新 更多