Javascript Chrome应用程序中AJAX请求的限制是什么?

Javascript Chrome应用程序中AJAX请求的限制是什么?,javascript,ajax,google-chrome-app,Javascript,Ajax,Google Chrome App,我正在计划一个Chrome应用程序项目,在那里我将执行大量AJAX调用。在将Chrome应用程序作为首选平台之前,我想更好地了解与web应用程序相比,它在AJAX调用方面的局限性和优势。在进行了一些研究之后,我得出了以下答案。由于我在这方面的经验有限,我想知道我的发现是否正确,以及是否还有其他需要考虑的局限性 1。原产地 与web应用相比,Chrome应用程序的来源限制更加灵活:通过请求,可以在应用程序清单中放松与AJAX请求相关的限制。因此,不需要像(CORS)和(CSP实际上禁止的)这样的技

我正在计划一个Chrome应用程序项目,在那里我将执行大量AJAX调用。在将Chrome应用程序作为首选平台之前,我想更好地了解与web应用程序相比,它在AJAX调用方面的局限性和优势。在进行了一些研究之后,我得出了以下答案。由于我在这方面的经验有限,我想知道我的发现是否正确,以及是否还有其他需要考虑的局限性

1。原产地

与web应用相比,Chrome应用程序的来源限制更加灵活:通过请求,可以在应用程序清单中放松与AJAX请求相关的限制。因此,不需要像(CORS)和(CSP实际上禁止的)这样的技术

2。内容

关于可访问内容的限制更为严格:Chrome应用程序脚本、样式表、图像、框架、插件和应用程序中的字体,但媒体资源(视频、音频和相关文本曲目)可以从任何外部资源加载。设置为允许加载任何URI,因此在给定跨源权限或使用CORS的情况下,可以对所有主机进行AJAX调用,并接收文本和媒体类型的响应。CSP不能使用的其他内容类型

(我发现的一个特点是:如上所述,CSP禁止加载多种内容类型,因此必须通过AJAX请求将其作为BLOB加载。由于同源策略,这必须通过CORS完成。大多数服务器没有启用CORS,即使它们的内容是公共的。因此,如果Chrome应用程序强制执行“访问控制”允许Orig在(ACAO)响应头中,CORS方法在很多情况下都会失败。 这个问题的解决方案是跨源权限:如果授予了访问服务器的权限,即使没有收到适当的ACAO标头,请求也会通过。但也可以仅依赖CORS:如果没有授予跨源权限,但请求是向a发出的,则请求也会通过。)

还有两件事需要注意:

  • Chrome应用程序的一些文档提到了扩展,而不是 在这些情况下,我假设那里提供的信息是 也适用于应用程序
  • 同步XHR请求是

不幸的是,你只需要测试一下就可以了。我找到了谷歌文档(尤其是Chrome应用程序)非常缺乏,经常出错。翻阅文档时,他们似乎是为了扩展而编写的,复制了所有文档,然后当他们遇到差异时,他们更改了文档,但没有涵盖所有内容

关于访问外部源,请遵循以下“说明”:


如果您发现问题,请在此处报告。

这些天,您能从Chrome应用程序中使用Ajax吗?