我正在開發一個我想在CDN上託管的庫。該庫將用於跨多個服務器的許多不同域。該庫本身包含一個加載web worker(worker.js)的腳本(現在我們稱之爲script.js)。執行來自不同來源的網絡工作者
加載庫本身非常簡單:只需將<script type="text/javascript" src="http://cdn.mydomain.com/script.js"></script>
標記添加到我想使用該庫的域(www.myotherdomain.com)。但是,由於圖書館正在從http://cdn.mydomain.com/worker.jsnew Worker('http://cdn.mydomain.com/worker.js')
加載工作人員,我得到一個SecurityException。在cdn.mydomain.com上啓用CORS。
對於網絡工作者,不允許在遠程域上使用web worker。使用CORS不會有幫助:瀏覽器似乎忽略它,甚至不執行預檢檢查。
解決方法是執行一個XMLHttpRequest來獲取worker的源代碼,然後創建一個BLOB url並使用這個url創建一個worker。這適用於Firefox和Chrome。但是,這似乎不適用於Internet Explorer或Opera。
解決方案是將工作人員放在www.myotherdomain.com上或放置一個代理文件(只需使用XHR或importScripts從cdn加載工作人員)。我不喜歡這個解決方案:它需要我在服務器上放置額外的文件,並且由於該庫在多臺服務器上使用,更新將很困難。
我的問題包括兩個parsts的:
- 是否有可能對遠程出身工人爲IE 10+?
- 如果是1,那麼最好如何處理跨瀏覽器?
或者您可以自己託管腳本並節省所有這些麻煩...... – 0xcaff
當然,但如果腳本作爲提供給其他用戶的網站的庫的工作人員加載,則這是不可能的,這是該問題的用例。 – MrP