Не удалось выполнить texImage2D в контексте WebGL2RenderingContext. Доступ к изображению на imageurl.com из источника exampale.com был заблокирован CORS - PullRequest
1 голос
/ 02 августа 2020

я видел этот ответ: Uncaught (в обещании) DOMException: не удалось выполнить 'texImage2D' в 'WebGL2RenderingContext': испорченные холсты не могут быть загружены. сделал сервер, но я пытаюсь создать расширение / надстройку, поэтому я запускаю сценарий на другом сервере, и если я попытаюсь установить атрибут crossOrigin на «анонимный», он говорит:

Доступ к изображению в ' https://dl5zpyw5k3jeb.cloudfront.net/photos/pets/48663430/1/?bust=1596323497&width=560 'from origin' https://www.petfinder.com 'заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '.

мой манифест:

{ 
    "manifest_version" : 2, 
    "name" : "tf", 
    "description": "tf",
    "version" : "0.2", 
    "content_scripts" : [
        { 
            "matches" : [ "<all_urls>"], 
            "js" : ["tfjs.js", "coco-ssd.js", "content.js"]
        }
    ]
}

мой код:

const img = document.getElementByTagName('img');
img.setAttribute('crossOrigin', 'anonymous');
cocoSsd.load().then(model => {
    let canvas = document.createElement("CANVAS");
    let ctx = canvas.getContext("2d");
    canvas.width = img.width;
    canvas.height = img.height;
    ctx.drawImage(img, 0, 0);
    model.detect(img).then(predictions => {
          ctx.strokeRect(predictions[0].bbox[0], predictions[0].bbox[1], predictions[0].bbox[2], predictions[0].bbox[3]);
      }
      let dataURL = canvas.toDataURL();
      img.src = dataURL;
      });
    }
  });

Ты заранее

1 Ответ

0 голосов
/ 03 августа 2020

wOxxOm сказал ответ:

Дело в том, что сценарии содержимого не могут выполнять запросы между источниками в новом Chrome, поэтому вам придется использовать страницу расширения. Например, вы можете добавить iframe на веб-страницу, указав на файл html внутри вашего каталога расширения, доступного через web_accessible_resources. Этот iframe будет иметь URL-адрес chrome -extension: // и сможет выполнять запросы из разных источников для URL-адресов, перечисленных в разрешениях

...