浏览器默认都是拒绝ajax跨域名请求数据
但可以通过php设置header信息来允许请求
header("Access-Control-Allow-Origin:*"); 或 header("Access-Control-Allow-Origin: *.mi.com");
但此中方式只适合firefox,google浏览器,微软的IE7,8,9浏览器都是不支持跨域请求,没有解决方法
IE浏览器唯一解决方式只能是jsonp的方式输出<script>标签的形式来解决跨域请求!
好消息是手机端浏览器都是采用webkit内核都是只需要设置下header就直接支持跨域请求,不需要再做兼容了!
关于解决跨域需要设置cookie的问题
IE浏览器通过jsonp访问形式解决跨域时必须在php中设置隐私策略,才能种植cookie
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
而firefox,google浏览器则不需要设置都可以直接种植cookie!
json和jsonp的区别
json是请求数据的一种方式,当不涉及cookie传送时建议用这种方式,取回来的数据是json格式
jsonp是为子解决IE不能跨域以及需要种植cookie和发送cookie时的一种解决方案,比如要验证登录才能取数据等等
如使用jquery扩展库
<script> $(function(){ $.ajax({ type: "post", url: '//m.test.shengmiguo.com/business_app.php?app=business_member&do=login', data: { username:'1325028', password:'123456' }, dataType: "jsonp", //或json数据格式 success: function(data){ alert(data.msg); } }); }); </script>