【问题标题】:What are the limitations on AJAX requests in Chrome Apps?Chrome 应用程序中的 AJAX 请求有哪些限制?
【发布时间】:2013-12-28 15:20:24
【问题描述】:

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

1.产地

对于 Chrome 应用程序的来源限制比 Web 应用程序更灵活:与 AJAX 请求相关的 same-origin policy 可以通过请求 cross-origin permissions 在应用程序的清单中放宽。因此,不需要像 Cross-Origin Resource Sharing (CORS) 和 JSONP 之类的技术(实际上是 Content Security Policy (CSP) 所禁止的)。

2。内容

关于可访问内容的限制更为严格:Chrome 应用程序can only refer to 应用程序内的脚本、样式表、图像、框架、插件和字体,但可以从任何外部加载媒体资源(视频、音频和相关文本轨道)资源。 ‘connect-src’ directive 设置为允许加载任何 URI,因此给予跨域权限或使用 CORS,可以对所有主机进行 AJAX 调用并接收文本和媒体类型响应。其他内容类型can be served as blobs. CSP 不能是relaxed.

(我发现的一个特点:如前所述,CSP 禁止加载多种内容类型,因此必须通过 AJAX 请求将它们作为 blob 加载。由于同源策略,这必须通过 CORS 完成。大多数服务器都没有启用 CORS,即使它们的内容是公开的。因此,如果 Chrome 应用程序始终强制执行“Access-Control-Allow-Origin”(ACAO)响应标头,CORS 方法在很多情况下都会失败. 这个问题的解决方案是跨域权限:如果授予访问服务器的权限,即使没有收到适当的 ACAO 标头,请求也会被允许通过。但是也可以单独依赖CORS:如果没有授予跨域权限,但是向server with wildcard ACAO settings发出请求,它也可以通过。)

另外需要注意的两点:

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

【问题讨论】:

  • 这些天你能从 Chrome 应用程序中使用 Ajax 吗?

标签: javascript ajax google-chrome-app


【解决方案1】:

不幸的是,您只需要对这一切进行测试即可。我发现 Google 文档(尤其是 Chrome 应用程序)非常缺乏并且经常出错。浏览文档,似乎他们为扩展编写了它们,复制了所有文档,然后当他们遇到差异时,他们更改了文档,但并未涵盖所有内容。

关于访问外部资源,请遵循以下“说明”: http://developer.chrome.com/apps/app_external.html#external

如果您发现问题,请在此处和https://code.google.com/p/chromium/issues/list同时报告

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 2011-03-28
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多