หากคุณกำลังพัฒนาโค้ดสั้น ๆ ในเครื่องและคุณกำลังใช้ Chrome แสดงว่ามีปัญหา หากหน้าของคุณโหลดโดยใช้ URL ในรูปแบบ "file: // xxxx" การพยายามใช้ getImageData () บนผืนผ้าใบจะล้มเหลวและทำให้เกิดข้อผิดพลาดด้านความปลอดภัยข้ามแหล่งที่มาแม้ว่ารูปภาพของคุณจะถูกดึงมาจากสิ่งเดียวกันก็ตาม ไดเร็กทอรีบนเครื่องโลคัลของคุณเป็นเพจ HTML ที่แสดงผ้าใบ ดังนั้นหากดึงหน้า HTML ของคุณมาจากให้พูดว่า:
ไฟล์: // D: /wwwroot/mydir/mytestpage.html
และกำลังดึงไฟล์ Javascript และรูปภาพของคุณให้พูดว่า:
ไฟล์: // D: /wwwroot/mydir/mycode.js
ไฟล์: // D: /wwwroot/mydir/myImage.png
แม้ว่าจะมีการดึงข้อมูลเอนทิตีรองเหล่านี้มาจากแหล่งกำเนิดเดียวกัน แต่ข้อผิดพลาดด้านความปลอดภัยก็ยังคงเกิดขึ้น
ด้วยเหตุผลบางประการแทนที่จะตั้งค่าจุดเริ่มต้นอย่างถูกต้อง Chrome จะตั้งค่าแอตทริบิวต์ต้นทางของเอนทิตีที่จำเป็นเป็น "null" ทำให้ไม่สามารถทดสอบโค้ดที่เกี่ยวข้องกับ getImageData () ได้ง่ายๆเพียงแค่เปิดหน้า HTML ในเบราว์เซอร์ของคุณแล้วทำการดีบักในเครื่อง
นอกจากนี้การตั้งค่าคุณสมบัติ crossOrigin ของรูปภาพเป็น "ไม่ระบุตัวตน" จะใช้ไม่ได้ด้วยเหตุผลเดียวกัน
ฉันยังคงพยายามหาวิธีแก้ปัญหานี้ แต่ดูเหมือนอีกครั้งว่าการดีบักในเครื่องกำลังได้รับความเจ็บปวดมากที่สุดเท่าที่จะทำได้โดยผู้ใช้งานเบราว์เซอร์
ฉันเพิ่งลองเรียกใช้โค้ดของฉันใน Firefox และ Firefox ทำให้ถูกต้องโดยรับรู้ว่ารูปภาพของฉันมาจากต้นกำเนิดเดียวกันกับสคริปต์ HTML และ JS ดังนั้นฉันยินดีรับคำแนะนำบางประการเกี่ยวกับวิธีแก้ไขปัญหาใน Chrome ในขณะนี้ในขณะที่ Firefox ทำงานตัวดีบักเกอร์ทำงานช้าอย่างเจ็บปวดจนถึงขั้นถูกลบออกไปหนึ่งขั้นตอนจากการโจมตีปฏิเสธบริการ