我已经阅读了关于 SO 的其他同源策略主题,但我没有看到任何与本地文件系统相关的解决方案。
我有一个必须在本地提供的网络应用程序(从广义上讲)。我试图在用户加载页面后加载大量数据,具体取决于他们在网页上所做的事情。在 Firefox 3.5 和 IE8 中,我可以使用 jQuery 的 AJAX() 和 GetScript() 方法来执行此操作,但在 Chrome 中,由于同源策略而失败。
XMLHttpRequest
无法加载file://test/testdir/test.js
。产地null
是不允许by Access-Control-Allow-Origin
的。
当我做一些简单的事情时会发生这种情况
$.getScript("test.js");
这在 IE 和 Firefox 中运行良好。
在阅读了一堆关于此的内容后,我决定尝试直接写入文档的头部。在 Chrome 的控制台中,我输入了以下内容:
var head = document.getElementsByTagName("head")[0];
var script =document.createElement('script');
script.id = 'uploadScript';
script.type = 'text/javascript';
script.src = "upload.js";
head.appendChild(script);
当粘贴在控制台中时,这可以正常工作 -<script...test.js</script>
元素被添加到头部,评估,并将内容加载到 DOM 中。
我认为这是成功的,直到我将此代码放入函数调用中。当从函数调用相同的代码时,会将元素添加到 JavaScript 文件中,但不会评估 JavaScript 文件。我不知道为什么。如果我使用 Chrome 的控制台在将元素添加到的方法中停止执行并运行上述代码,它不会评估它。但是,如果我取消暂停执行并运行完全相同的代码(将其粘贴到控制台窗口中),它就可以工作。我无法解释这一点。以前有没有人处理过这个问题?
我已经阅读了以下 SO 帖子,但它们没有描述我遇到的问题:
规避同源策略的方法
XMLHttpRequest Origin null is not allowed Access-Control-Allow-Origin for file:/// to file:///(无服务器)
跨站 XMLHttpRequest
同样,我最后的手段是在网页加载时加载所有数据——这可能会导致加载网页时出现长达 10 秒的延迟,这对于 90% 的应用程序用户来说是不必要的。
感谢您的任何建议/替代方案!!!