ajax跨域,json,jsonp

由于浏览器安全模型的同源策略,ajax存在跨域问题。

解决跨域问题:

1.服务器代理

a.com中:

页面  -->  $.post(

  'http://a.com/proxy.php',

  ..)

proxy.php -->  $url="http://b.com/send.php?";   //b.com的接口

        $url.=http_build_query($data)   //传递b的数据

2.jsonp

a.com中:

<script>

  function show(){

    alert(data.txt);

  }

</script>

<script src="http://a.com/user.php?calback=show"></script>

b.com的user.php中:

echo $get['callback'].'('.json_encode($data').')';

将输出show({"uid":1000,"name"..})  是一个可执行的js函数体

JSONP的优点是:它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都 可以运行,不需要XMLHttpRequest或ActiveX的支持;并且在请求完毕后可以通过调用callback的方式回传结果。

 

JSONP的缺点则是:它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。

        

原文地址:https://www.cnblogs.com/tu-l/p/5231403.html