Ago*_*iro 6 javascript ajax google-chrome-app
我正在计划一个Chrome App项目,我将在其中执行大量的AJAX调用.在确定Chrome应用程序作为首选平台之前,我希望能够更好地了解与Web应用程序相比的AJAX调用的局限性和优势.进行了一些研究后,我想出了以下答案.由于我在这方面的经验有限,我想知道我的发现是否正确,是否还有其他限制应该考虑.
1.起源
Chrome应用程序的起源限制比Web应用程序更灵活:通过请求跨域权限,可以在应用程序清单中放宽与AJAX请求相关的同源策略.因此,不需要诸如跨源资源共享(CORS)和JSONP(事实上内容安全策略(CSP)禁止)的技术.
2.内容
有关可访问内容的限制更严重:Chrome应用程序只能引用应用程序中的脚本,样式表,图像,框架,插件和字体,但可以从任何外部资源加载媒体资源(视频,音频和相关文本轨道).在"连接-SRC"指令设置为允许加载任何的URI,所以给出的跨域权限或使用CORS,一个可以让AJAX调用的所有主机和接收文本和媒体类型响应.其他内容类型可以作为blob提供.CSP不能放松.
(我发现一个特点:如上所述,CSP禁止加载多种内容类型,因此必须通过AJAX请求将它们作为blob加载.由于同源策略,这必须通过CORS完成.大多数服务器都不要没有启用CORS,即使它们的内容是公开的.因此,如果Chrome Apps始终强制执行"Access-Control-Allow-Origin"(ACAO)响应标头,那么CORS方法在很多情况下都会失败.这个问题是跨域权限:如果给予访问服务器的权限,即使没有收到适当的ACAO头,也会通过请求.但是也可以单独依赖CORS:如果没有跨域权限授予,但请求是通过通配符ACAO设置的服务器,它也是通过.)
还有两点需要注意:
不幸的是,您只需要对这一切进行测试即可。我发现 Google 文档(尤其是 Chrome 应用程序)非常缺乏且经常出错。浏览文档,看起来他们是为了扩展而编写的,复制了所有文档,然后当他们遇到差异时,他们更改了文档,但没有涵盖所有内容。
至于访问外部源,请遵循以下“说明”: http ://developer.chrome.com/apps/app_external.html#external
如果您发现问题,请在此处和https://code.google.com/p/chromium/issues/list报告
| 归档时间: |
|
| 查看次数: |
2741 次 |
| 最近记录: |