"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > विभिन्न सर्वरों से छवियाँ लोड करते समय कैनवस.toDataURL() एक सुरक्षा अपवाद क्यों फेंकता है?

विभिन्न सर्वरों से छवियाँ लोड करते समय कैनवस.toDataURL() एक सुरक्षा अपवाद क्यों फेंकता है?

2024-11-11 को प्रकाशित
ब्राउज़ करें:629

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

कैनवास toDataURL() में क्रॉस-ओरिजिनल समस्या

पर्याप्त आराम सुनिश्चित करने के बावजूद, कैनवास.toDataURL() का उपयोग करते समय उपयोगकर्ताओं को सुरक्षा अपवादों का सामना करना पड़ सकता है। . निम्नलिखित कोड पर विचार करें:

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"));
}

यह कोड एक अलग सर्वर से एक छवि को एक नई विंडो में बेस64 डेटा के रूप में खोलने का प्रयास करता है, लेकिन यह एक SECURITY_ERR अपवाद उठाता है।

विनिर्देशों के अनुसार, toDataURL() विधि यदि कैनवास तत्व का मूल-स्वच्छ ध्वज गलत पर सेट है तो वह SECURITY_ERR अपवाद फेंकता है। जब कोई छवि किसी भिन्न सर्वर से लोड की जाती है, तो कैनवास दूषित हो जाता है और उसका मूल-स्वच्छ ध्वज गलत पर सेट हो जाता है।

इसलिए, यहां से प्राप्त छवियों के लिए बेस64 डेटा प्राप्त करने के लिए सीधे toDataURL() का उपयोग करना संभव नहीं है विभिन्न सर्वर. क्रॉस-ओरिजिनल छवियों को संभालने के लिए वैकल्पिक तकनीकें, जैसे CORS या प्रॉक्सी, आवश्यक हो सकती हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3