爲什麼不能像爲什麼file://路徑總是被視爲跨域?
file:///C:/index.html
本地頁面發送一個資源
file:///C:/data.json
請求這是防止因爲它是一個跨源請求,但以何種方式是交叉的起源?我不明白爲什麼這是一個漏洞/阻止。當我想爲JavaScript/HTML中的某個東西創建一個快速實用程序時,它看起來像是一個巨大的痛苦,並且由於這個看似任意的限制,我無法在沒有上傳到某個服務器的情況下運行它。
爲什麼不能像爲什麼file://路徑總是被視爲跨域?
file:///C:/index.html
本地頁面發送一個資源
file:///C:/data.json
請求這是防止因爲它是一個跨源請求,但以何種方式是交叉的起源?我不明白爲什麼這是一個漏洞/阻止。當我想爲JavaScript/HTML中的某個東西創建一個快速實用程序時,它看起來像是一個巨大的痛苦,並且由於這個看似任意的限制,我無法在沒有上傳到某個服務器的情況下運行它。
HTML文件預計是「安全的」。誘騙人們將HTML文檔保存到硬盤上然後打開它並不困難(在這裏,只需打開附加到此電子郵件的HTML文件就可以使許多電子郵件客戶端自動將其安全地保存到tmp
目錄並在默認應用程序)。
如果該文件中的JavaScript有權讀取磁盤上的任何文件,那麼用戶將非常容易受到攻擊。
與允許運行宏之前Microsoft Word等軟件提示一樣,這也是一樣的原因。
瀏覽器設置了安全措施,以確保普通用戶不會增加風險。想象一下,我是一個惡意網站,我有你下載的東西到你的文件系統,看起來像你的常規網站。想象一下,下載的HTML可以訪問文件系統的其他部分,然後通過AJAX或者文件系統的另一個可執行代碼將這些數據發送給我。對於普通用戶來說,這可能看起來像一個普通的網站,只是「開放了一點點奇怪,但我仍然得到它的工作。」如果瀏覽器阻止,它們更安全。
可能會關閉這些標誌(如在此處:How to launch html using Chrome at "--allow-file-access-from-files" mode?),但這對於知識豐富的用戶(「超級用戶」)來說更是如此,並且可能帶有關於瀏覽會話不安全的警告。
對於你所談論的那種場景,你應該能夠啓動一個本地的HTTP服務器 - 可能使用Python,Ruby或node.js(我想Node.js會是一個有吸引力的測試JavaScript基本應用程序的選項)。
嗯,這是什麼瀏覽器?我敢說這是一件相當奇特的事情,只有少數人偶然發現的問題。原因很簡單,很少有人在網頁開發中使用文件方案... – arkascha
不是一個真正的答案,但這可能有所幫助:http://stackoverflow.com/questions/18586921/how-to-launch-html-using-chrome -at-allow-file-access-from-files-mode如果你使用的是Chrome瀏覽器 –
@arkascha好吧,我多次遇到它的地方是''CanvasRenderingContext2D':畫布被交叉污染了,原始數據「,當試圖做一些快速的一次性圖像處理實用程序。我當然希望答案不僅僅是「它不應該那樣,而是因爲沒有人關心它被打破了。」 – Mark