在我们的Web应用程序中,我们使用以下服务器通信方法
我们在两种情况下都发送相同的内容/数据,但XMLHttpRequest在网络中运行。
使用的浏览器是带有--disable-web-security标志的chrome。
Web工作者XMLHttpRequest在工作者内部而不是在外部失败的原因是否有任何原因?
如果将XMLHttpRequest的完全相同的代码从worker转移到普通的JavaScript,那么它的工作原理是否完美?
ERROR:
XMLHttpRequest无法加载URL。原始文件:// Access-Control-Allow-Origin不允许。
答案 0 :(得分:2)
更新
经过我们大多数团队的大量努力,我们发现在Chrome中,网络工作者似乎运行时与主浏览器的安全性不同。 (我的意思是当浏览器使用--disable-web-security运行时,web worker不会)。
我们尝试从(file:///)访问域资源(http://domain.com/resource)。尽管浏览器在禁用Web安全性的情况下运行,但解决方案是让服务器响应“Access-Control-Allow-Origin:*”标题。
虽然我们可以使用file:///而不是通配符,但我们无法确定它在生产中的设备之间可能会如何变化,而且由于我们在封闭网络中运行,因此这不是一个问题。< / p>
当天结束时的代码完全保持不变,只需要在服务器标题中进行此更改即可。
答案 1 :(得分:1)
有两个可能导致此问题的问题。哪一个是罪魁祸首取决于你的设置。
<强> 1。您正尝试从网络应用访问文件
听起来这可能是你所指的问题。 Chrome有一个非常严格的访问控制策略,表示您无法远程访问本地文件。可悲的是没办法。
<强> 2。您正尝试从其他文件访问文件但尚未启用
有关本地文件的访问控制规则的唯一例外是当您从另一个本地文件发出请求时。这仍然是默认禁用,需要通过在启动chrome时传递--allow-file-access-from-files
标志来启用。