繁体   English   中英

检查是否存在运行CORS的映像

[英]Check If Image Exists Running Into CORS

我正在尝试使用以下功能检查图像是否存在,但一直遇到CORS错误。 这些图像不是从服务器发送的,因此无法添加常规的Access-Control标头。 这些图像位于本地文件夹中,我只需要检查是否存在指定的图像。

当前代码:

function isInFolder(url)
    {
      var http = new XMLHttpRequest();
      http.open('HEAD', url, false);
      http.send();
      return http.status!=404;
    }

错误:

scripts.b0f3172f.js:1 XMLHttpRequest cannot load file:///Users/robertgrzesik/Documents/Development/AngularJS/Templates_Base/dist/assets/product1/content1/info/1.png. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

我想做的逻辑:

// Assets can be images or videos
if(isInFolder(myAsset)) {
  myAssetArray.push(myAsset);
}

最终成为执行此操作的最佳解决方案(没有Web服务器):

      var fileURL = "assets/"+scope.productDirectory+"/content1/info/"+x+".png";
      imageExists(fileURL, function(exists, url) {
        if(exists) {
          scope.contentOneSequence.push(url);
        }
      });

     function imageExists(url, callback) {
      var img = new Image();
      img.onload = function() { callback(true, url); };
      img.onerror = function() { callback(false, url); };
      img.src = url;
    }

跨源请求仅支持以下协议方案:http,数据,chrome,chrome扩展名,https,chrome-extension-resource。

您遇到的错误是不言自明的。 看来您的脚本正在尝试直接访问文件系统,而这是不允许的。

您应该使用本地开发网络服务器来提供资产。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM