Warum löst canvas.toDataURL() eine Sicherheitsausnahme aus?
Bei der Arbeit mit HTML-Canvases kann es zu einer verwirrenden Sicherheitsausnahme kommen Es wird versucht, die Base64-Daten-URL des Canvas mithilfe der toDataURL()-Methode abzurufen. Lassen Sie uns den Grund für diesen Fehler untersuchen und eine Lösung finden.
Mit der toDataURL()-Methode können Sie den Canvas-Inhalt in eine Base64-codierte Zeichenfolge konvertieren, die zum Speichern oder Teilen eines Bildes nützlich sein kann. Es ist jedoch wichtig zu verstehen, dass diese Methode eine Sicherheitsausnahme auslöst, wenn das Canvas-Element als „origin-unclean“ gilt.
Gemäß den HTML-Spezifikationen gilt ein Canvas-Element als origin-unclean, wenn es geladene Bilder enthält von einem anderen Server als die Webseite selbst. In Ihrem Code-Snippet wird das Bild von „www.ansearch.com“ geladen, was einen anderen Ursprung als die Webseite hat.
Diese Sicherheitsbeschränkung dient dazu, eine herkunftsübergreifende Kontamination von Inhalten zu verhindern, wenn a Eine böswillige Website könnte auf Bilder einer anderen Website zugreifen und diese ändern, was ein Sicherheitsrisiko darstellt. Daher führt der Versuch, eine ursprünglich nicht bereinigte Zeichenfläche mithilfe von toDataURL() in eine Base64-Zeichenfolge zu konvertieren, zu einer SECURITY_ERR-Ausnahme.
Um dieses Problem zu umgehen, können Sie sicherstellen, dass das Bild auf der Zeichenfläche verwendet wird wird vom selben Ursprung wie die Webseite geladen. Dies bedeutet, dass Sie das Image auf Ihrem eigenen Server hosten oder ein CDN verwenden, das das Image vom selben Ursprung bereitstellt. Sobald das Bild von einem passenden Ursprung geladen ist, sollte die toDataURL()-Methode ohne Fehler funktionieren.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3