我一直在寻找适用于Firefox OS的打包应用程序,而我依赖于模拟器,因为我没有在设备上构建操作系统。我遇到了XHR请求的问题,我不确定问题是否是我忽略的设置,或者模拟器是否只是错误。
我阅读文档表明,添加network-http的权限应该足以向Web服务发出XHR请求。我在源代码中也看到了systemXHR权限。我已经试过了,但到目前为止还没有快乐。我正在使用Firefox for OS X的模拟器,我的清单看起来像这样:
清单:
{
"version": "0.1",
"name": "Hello World",
"description": "A hello world app.",
"launch_path": "/app/index.html",
"icons": {
"16": "/app/img/icons/mortar-16.png",
"48": "/app/img/icons/mortar-48.png",
"128": "/app/img/icons/mortar-128.png"
},
"installs_allowed_from": ["*"],
"permissions": {
"systemXHR": {},
"network-http": {},
"network-tcp": {}
},
"type": "privileged"
}
已经回答了similar question,但我认为答案可能是针对网络应用,而不是打包的应用,并且一个例子可以帮助无懈可击。
我是否遗漏了一些明显的东西,模拟器是否已损坏,或者打包应用程序是否需要CORS?
答案 0 :(得分:7)
请注意,要使用systemXHR权限,您还需要在创建请求对象时传递特殊参数,例如
var xhr = new XMLHttpRequest({mozSystem: true});
答案 1 :(得分:2)
对于使用JQuery $ .ajax的Backbone或其他Javascript框架,请使用:
$.ajaxSetup( {
xhr: function() {return new window.XMLHttpRequest({mozSystem: true});}
});
我认为你不需要使用CORS。我的应用程序在没有CORS的模拟器中工作正常,但如果在本地服务器上启动则无法调用远程REST服务器。
请注意,如果您忘记设置
dataType:“text”
对于一些$ .ajax调用(例如加载html模板),您可以在桌面浏览器返回字符串时获取XMLDocument。
答案 2 :(得分:0)
看看Rob Nyman Boilerplate,他有一个有效的XHR演示
答案 3 :(得分:0)
要在我的Firefox OS应用程序中启用CORS,我必须在apps manifest.webapp文件中启用systemXHR权限:
"permissions": {
"systemXHR" : {
"description" : "Required to access remote api"
}
}