>  기사  >  웹 프론트엔드  >  다른 서버에서 이미지를 로드할 때 canvas.toDataURL()이 보안 예외를 발생시키는 이유는 무엇입니까?

다른 서버에서 이미지를 로드할 때 canvas.toDataURL()이 보안 예외를 발생시키는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-31 10:07:02906검색

Why Does canvas.toDataURL() Throw a Security Exception When Loading Images From Different Servers?

Canvas toDataURL()의 교차 원본 문제

충분한 휴식을 보장하더라도 canvas.toDataURL()을 사용할 때 사용자에게 보안 예외가 발생할 수 있습니다. . 다음 코드를 고려해 보세요.

<code class="javascript">var frame = document.getElementById("viewer");
frame.width = 100;
frame.height = 100;

var ctx = frame.getContext("2d");
var img = new Image();
img.src = "http://www.ansearch.com/images/interface/item/small/image.png"

img.onload = function() {
    // Draw image
    ctx.drawImage(img, 0, 0)

    // Security exception occurs here:
    window.open(frame.toDataURL("image/png"));
}</code>

이 코드는 다른 서버의 이미지를 새 창에서 base64 데이터로 열려고 시도하지만 SECURITY_ERR 예외가 발생합니다.

사양에 따르면 , 캔버스 요소의 toDataURL() 메서드는 Origin-Clean 플래그가 false로 설정된 경우 SECURITY_ERR 예외를 발생시킵니다. 이미지가 다른 서버에서 로드되면 캔버스가 오염되고 해당 Origin-Clean 플래그가 false로 설정됩니다.

따라서 toDataURL()을 직접 사용하여 원본 이미지에 대한 base64 데이터를 얻을 수 없습니다. 다른 서버. 원본 간 이미지를 처리하려면 CORS 또는 프록시와 같은 대체 기술이 필요할 수 있습니다.

위 내용은 다른 서버에서 이미지를 로드할 때 canvas.toDataURL()이 보안 예외를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.