AJAX 跨域

1.说到ajax就会遇到的两个问题

         1.1AJAX以何种格式来交换数据

                   1.自定义字符串

                   2.XML描述

                   3.JSON描述(建议使用)

         1.2如何解决跨域

                   1.使用jQuery的ajax解决跨域问题——JSONP解决(建议使用)

                   2.表单POST方式

                   3.服务器代理

                   4.HTML5中的postMessage

                   5.Flash request

2.同源策略与跨源策略

    1.同源策略

      同源策略:阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的URL的域必须与当前Web页面的域相同、相同端口。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。

    2.跨源策略

      跨源策略(CORS):是一个Web浏览器技术规范,它定义了一个方法让Web服务器允许其他域名页面访问它的资源。跨源策略定义了一个方法让浏览器和服务器可以交互决定是否允许跨源请求。

      大家注意到同源请求中我们使用的是JSON格式,但在跨源请求中却是使用JSONP,这时大家可能有点困惑,首先我们必须理解JSON和JSONP的区别:JSON是一种数据格式,而JSONP像是通过一个方法名来封装JSON格式;由于浏览器允许跨源请 求<script>资源,如我们的HTML页面代码中使用了Google的jQuery库,当我们Web程序发送跨源请求后,服务器给我们提 供响应数据,但服务器无法预知接受JSON数据的方法名,所以我们要提供一个方法名。

3.ajax跨域问题解决

  1.使用jQuery的ajax解决跨域问题——JSONP解决(建议使用)

$.ajax({ 

     type: "get", 

     async: false, 

     url: "http://abc.com:8080/AjaxCrossDomain/jsonp/data.jsp", 

     dataType: "jsonp", 

     jsonp: "callback", 

     jsonpCallback:"flightHandler", 

     success: function(json){ 

         alert('您查询到航班信息:票价: ' + json.price + ' 元,余票: ' + json.tickets + ' 张。'); 

     }, 

     error: function(){ 

         alert('fail'); 

     } 

 });

         2.表单POST方式

         3.服务器代理

         4.HTML5中的postMessage

         5.Flash request

posted @ 2015-12-18 14:32  ricesm  阅读(181)  评论(0编辑  收藏  举报