簡體   English   中英

相同的原始政策,谷歌瀏覽器,畫布和文件://方案

[英]Same origin policy, google chrome, canvas and file:// scheme

當嘗試從預先繪制圖像的畫布上讀取圖像數據時,谷歌瀏覽器引發了一個交叉起源異常(抱怨畫布被“污染”)。 目錄結構如下。

/html/base/path
|-- index.html         contains the canvas element, references the script.js
|-- script.js          loads imgs/images.jpg, paints and queries the canvas
`-- imgs/image.jpg

僅當頁面由file:// scheme加載時才會發生錯誤。

我想知道這是否是一個Chrome bug。 如果不是,哪些規則適用? 有沒有解決方法?

不幸的是,離線觀看是最終的用例,所以

  • file:// scheme是必不可少的
  • 無法控制目標系統上的瀏覽器設置。

使用file://加載的file://始終被視為來自不同的域,這是您無法繞過的功能。

HTML5規范的Origin定義

如果以某種其他方式獲取文檔(例如,數據:用戶鍵入的URL,使用createDocument()API創建的文檔等)原點是在創建文檔時分配的全局唯一標識符。

您可以顯示但如果加載協議是file:則無法分析或更改從另一個文件讀取的數據file:


在你的情況下可能會做什么(如果我從你的評論中正確理解的話):我會寫一個小程序,可以在外部存儲介質中發布,這將啟動一個http服務器並啟動一個Web瀏覽器。 會在Go(簡單地用兩行或三行制作一個http服務器,用於linux,Mac和Windows的原生編譯,使你能夠提供所有需要的可執行文件)中做到這一點,但也可以使用其他語言。

給他們指示他們用標志--allow-file-access-from-files啟動chrome。

除此之外,他們需要運行本地服務器實例以避免錯誤。

這是實踐中新的Chromium安全策略。 除了epascarello上面所述禁用此政策外,您無法執行任何操作。 明星這個錯誤 ,他們有點希望放松這個規則。

也請檢查這個答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM