jelly9
jelly9
  • 发布:2016-05-31 08:10
  • 更新:2016-05-31 09:35
  • 阅读:1157

离线打包的话,则在小米1下跨域ajax失败?

分类:5+ SDK

离线打包的apk,在其他手机上都能正常使用,安装到小米1上,(内核版本android 4.1)则ajax全部失效了。
查看了logcat,提示XMLHttpRequest不允许跨域
xmlhttprequest cannot load no 'access-control-allow-origin'

而通过Hbuilder 云端打包的程序,就能在这台机器上跑起来。

因为要用到h5+的插件,以runtime方式集成的。在其他机器上都好使,为什么到了这边出错呢。

感觉应该是离线打包时,还有某些权限或者配置没有写对把,但是查了很多官方文档都没提及此问题,望得到管理员解答。。
非常感谢!

2016-05-31 08:10 负责人:无 分享
已邀请:
jelly9

jelly9 (作者)

貌似知道问题了,给大家参考

但感觉是h5+的bug呢?
在plus状态下,本该自动检测是plus状态(我的ajax代码也是放在plusready之后运行的),则ajax实则不调用浏览器本身的xhr,而是使用native接口去通过sdk内封装的网络请求类去请求跨域内容。
但在我上面说的情况中,程序没有检测出或者js的xhr对象覆盖失败,则mui.ajax又调用的是浏览器本身的xhr,则出现无法跨域问题。

解决方案,
在ready之后,手动将xhr对象覆盖一次,保证一定是以native xhr模式运行。(这样覆盖代码加上之后,则应用的兼容性变差,多端发布时留坑了)

在应用启动时,就覆盖对象

mui.ajaxSettings.xhr=function(){  
return new plus.net.XMLHttpRequest();  
}
jelly9

jelly9 (作者)

@DCloud_Android_磊子 报告一个Bug,检测是否是在app中运行的机制,在android 4.1.1 小米1的ROM上可能有问题。

该问题目前已经被锁定, 无法添加新回复