배경:
" 발견되지 않은 SecurityError: 'CanvasRenderingContext2D'에서 'getImageData' 실행 실패: 교차 출처 URL의 이미지가 있는 캔버스에서 .getImageData()를 사용할 때 캔버스가 교차 출처 데이터로 오염되었습니다.
문제:
'교차 출처' 문제는 이미지의 도메인이 현재 도메인과 다르기 때문에 발생합니다. 이 보안 조치는 다른 도메인의 리소스에 대한 무단 액세스를 방지합니다.
해결책:
문제를 해결하려면 이미지의 crossOrigin을 설정하여 캔버스가 오염되는 것을 방지할 수 있습니다. 속성을 "익명"으로 설정:
var img = new Image(); img.crossOrigin = "Anonymous"; // Prevents tainting img.src = "https://cross-origin-image.example.com/image.jpg";
서버측 구성:
또한 이미지를 호스팅하는 원격 서버는 다음 헤더를 설정해야 합니다.
Access-Control-Allow-Origin: *
이 헤더는 모든 출처의 이미지에 대한 액세스 권한을 부여하므로 이미지를 오염시키지 않고 캔버스에 로드할 수 있습니다.
예:
Dropbox 파일 선택기는 '직접 링크' 옵션을 사용할 때 적절한 crossOrigin 및 Access-Control-Allow-Origin 헤더를 설정합니다. 이를 통해 JavaScript 코드가 Dropbox에서 이미지를 검색하고 다른 도메인의 캔버스에서 조작할 수 있습니다.
위 내용은 다음은 기사 내용에 맞는 몇 가지 질문 기반 제목입니다. * Cross-Origin 이미지에 `getImageData()`를 사용할 때 \'Tainted Canvas\' 오류를 수정하는 방법은 무엇입니까? * `getImageD를 사용할 수 없는 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!