3

在我们的 Web 应用程序中,我们使用以下服务器通信方法

  • XMLHttpRequest

在这两种情况下,我们都发送相同的内容/数据,但 XMLHttpRequest 在网络工作中运行。

使用的浏览器是带有 --disable-web-security 标志的 chrome。

网络工作者 XMLHttpRequest 会在工作者内部而不是外部失败,有什么原因吗?

如果将 XMLHttpRequest 的完全相同的代码从 worker 移到普通的 JavaScript 中,它会完美运行吗?

错误:

XMLHttpRequest 无法加载 URL。Access-Control-Allow-Origin 不允许使用原始文件://。

4

2 回答 2

2

更新:

经过这里大多数团队的大量努力,我们发现在 Chrome 中,Web Worker 的运行安全性似乎与主浏览器不同。(我的意思是当浏览器使用 --disable-web-security 运行时,网络工作者不会)。

我们试图从 (file:///) 访问域资源 (http://domain.com/resource)。尽管浏览器在禁用网络安全的情况下运行,但解决方案是让服务器以“Access-Control-Allow-Origin:*”的标头响应。

尽管我们可以使用 file:/// 而不是通配符,但我们无法确定这会如何在生产中的设备之间发生变化,而且由于我们在封闭的网络中运行,所以这不是一个问题。

一天结束时的代码完全保持不变,只需要在服务器响应的标头中进行这种更改。

于 2012-08-28T11:59:22.060 回答
1

有两个可能的问题可能导致这种情况。哪个是罪魁祸首取决于您的设置。

1.您正在尝试从 Web 应用程序访问文件

听起来这可能是您所指的问题。Chrome 有一个非常严格的访问控制政策,规定您不能远程访问本地文件。可悲的是没有办法解决它。

2.您正试图从另一个文件访问一个文件并且没有启用它

关于本地文件的访问控制规则的唯一例外是当您从另一个本地文件发出请求时。这仍然默认禁用,需要在--allow-file-access-from-files启动 chrome 时通过传递标志来启用。

于 2012-08-21T21:21:24.030 回答