ajax跨域请求

来源:互联网 发布:webaccess组态软件 编辑:程序博客网 时间:2024/06/07 07:31
通过XHR实现AJAX通信的一个主要的限制,来源于跨域安全策略。在默认情况下,XHR对象只能访问与包含它的页面位于同一个域中的资源。这样可以防止一些恶意行为。所谓的域,可以理解成域名,如果这个XHR所在的页面与请求的接口是在同一个应用下面,那么就不存在跨域的问题,它们是在同一个域下面,例如这里都在本地(localhost:8080)。

又如请求发起的XHR和请求的目标都是在wikipedia.org下面,则也不存在跨域的问题。


而如果请求的发起XHR所在的页面和目标不在一个域下面,就存在了跨域的问题:


这就是跨域问题,由于对XHR对象的限制,虽然我们使用浏览器可以直接访问这个接口,但是当使用XHR来请求这个接口的时候,却报错了。实现合理的跨域请求对于开发web应用来说是至关重要的,此处介绍一种跨域请求的解决方案jsonp。如:

$(window).load(function() {        var cityString = "London";    var wikiUrl = 'http://en.wikipedia.org/w/api.php?action=opensearch&search='            + cityString + '&format=json&callback=wikiCallback';        $.ajax({        url: wikiUrl,        dataType: "jsonp",        success: function( data ) {            console.log(JSON.stringify(data));        }    });});

相较于之前使用jQuery实现对于普通JSON接口访问的方式,实现JSONP的方式与之最大的区别在于两个参数的配置:type和dataType。在实现JSONP的方式中,没有了type的选项,并且dataType变成了jsonp。除此之外,基本没有什么变化。

原创粉丝点击