Chrome应用程序中AJAX请求的限制是什么
What are the limitations on AJAX requests in Chrome Apps?
我正在计划一个Chrome应用程序项目,在那里我将执行许多AJAX调用。在选择Chrome应用程序作为平台之前,我想更好地了解它在AJAX调用方面相对于web应用程序的局限性和优势。在进行了一些研究之后,我得出了以下答案。由于我在这方面的经验有限,我想知道我的发现是否正确,以及是否有其他限制需要考虑
1.来源
Chrome应用程序的原产地限制比web应用程序更灵活:通过请求跨原产地权限,可以在应用程序的清单中放宽与AJAX请求相关的原产地相同政策。因此,不需要像跨源资源共享(CORS)和JSONP(这实际上是内容安全策略(CSP)所禁止的)这样的技术。
2.内容
关于可访问内容的限制更为严重:Chrome应用程序只能引用应用程序中的脚本、样式表、图像、框架、插件和字体,但媒体资源(视频、音频和相关的文本轨道)可以从任何外部资源加载。"connect-src"指令被设置为允许加载任何URI,因此给定跨源权限或使用CORS,可以对所有主机进行AJAX调用,并接收文本和媒体类型的响应。其他内容类型可以用作Blob。CSP不能放松。
(我发现了一个特点:如上所述,CSP禁止加载几种内容类型,因此必须通过AJAX请求将其加载为Blob。由于同源策略,这必须通过CORS完成。大多数服务器都没有启用CORS,即使它们的内容是公共的。因此,如果Chrome应用程序始终强制执行"访问控制允许同源"(ACAO)响应标头,CORS方法在很多情况下都会失败。这个问题的解决方案是跨源权限:如果授予访问服务器的权限,即使没有收到适当的ACAO标头,也会允许请求通过。但也可以单独依赖CORS:如果没有授予跨源权限,但请求是向具有通配符ACAO设置的服务器发出的,则也会被允许通过。)
需要注意的另外两件事:
- Chrome应用程序的一些文档引用了扩展,而不是应用程序。在这些情况下,我认为对应用程序也是正确的
- 同步XHR请求被禁用
不幸的是,您只需要测试所有这些。我发现谷歌文档(尤其是Chrome应用程序)非常缺乏,而且经常出错。浏览文档时,他们似乎是为扩展而写的,复制了所有文档,然后当他们遇到差异时,他们更改了文档,但并没有涵盖所有内容。
关于访问外部来源,请遵循以下"说明":http://developer.chrome.com/apps/app_external.html#external
如果你发现问题,请在这里和https://code.google.com/p/chromium/issues/list
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- 使用node.js发送并发ajax请求的限制是什么
- 什么是 HTTP 请求标头
- 在 http 请求中添加事件侦听器 ( request.on ) 是什么意思?而笏就是它的用途
- 响应 JSONP 请求时循环的无限空的目的是什么
- Chrome应用程序中AJAX请求的限制是什么
- 了解HTTP请求中的referr/referrer的安全方法是什么
- 如果我使用xhr请求,那么ajaxComplete的等价物是什么
- 从 ajax 请求将控制信号发送回客户端的最佳实践方法是什么?
- Http 请求与凭据这是什么以及为什么使用它
- 是什么原因导致 node.js 等到请求完成
- 在每秒 10 次调用限制的情况下一次发出 50 个 API 请求的有效方法是什么(烂番茄 API)
- 流星 - 从发布请求中获取文件的最佳方法是什么
- 将javascript代码作为POST请求发送的安全方式是什么
- jqueryajax表单提交请求第一次点击不起作用可能是什么原因
- 在发送AJAX请求时手动指定MIME类型的好处是什么?
- 在没有外部库的情况下,在Node中处理多个异步http请求的正确方法是什么?
- 在Facebook上用Javascript请求扩展权限的正确方法是什么?
- 在ASP中,什么是保存请求变量到一个框架的最好方法
- 基于已知键数组向Firebase DB发出批处理请求的最有效方法是什么?