Maison > interface Web > js tutoriel > le corps du texte

Pourquoi `canvas.toDataURL()` lance-t-il un `SECURITY_ERR` lors du dessin d'images d'une origine différente ?

DDD
Libérer: 2024-10-31 22:32:28
original
522 Les gens l'ont consulté

Why does `canvas.toDataURL()` throw a `SECURITY_ERR` when drawing images from a different origin?

Comprendre l'exception de sécurité dans 'canvas.toDataURL()'

Considérez le code suivant :

<pre class="brush:php;toolbar:false">
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)

    // Here's where the error happens:
    window.open(frame.toDataURL("image/png"));
}
Copier après la connexion

Ce code tente de convertir un élément de canevas en une URL de données à l'aide de la méthode 'toDataURL()'. Cependant, cela entraîne une erreur 'SECURITY_ERR: DOM Exception 18'.

La raison de cette erreur provient des restrictions de sécurité imposées par les navigateurs Web. Selon les spécifications HTML Canvas, si l'image dessinée sur le canevas provient d'une origine différente (dans ce cas, de « http://www.ansearch.com »), le navigateur empêchera la conversion du canevas en une URL de données. Ceci est fait pour empêcher l'accès aux données d'origine croisée et les vulnérabilités de sécurité potentielles.

Par conséquent, si vous essayez de générer une URL de données à partir d'un élément de canevas contenant une image d'une origine différente, vous rencontrerez ce problème de sécurité. exception. Pour résoudre ce problème, vous devez vous assurer que l'image provient de la même origine que votre application Web ou explorer des méthodes alternatives de conversion d'image.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!