自我学习——ajax——跨域问题总结

  使用ajax的人基本上都会遇到跨域问题,这是个很尴尬的问题,因为单单是前端真是无力跨域(一级)

  好了,废话不多说,我们开始

  二级域名跨域:

  二级域名跨域算是跨域里面比较简单的哪一个了,具体代码我就不详细写了,网上都有,原理也简单:在需要调用ajax的页面xiaosi.html 上添加iframe,这个iframe指向的页面放在和ajax提供的接口或者方法同域名的位置,然后指定iframe和xiaosi.html上面的domain为一级域名(也就是整个网站的域名 xxx.com 这种),然后需要调用数据的话,通过操作iframe里面的ajax方法调用,然后再把数据返回给parent,这同样们就可以在xiaosi.html内得到我们想要的数据了

  一级域名跨域:

    jsonp:

      没什么太大的难度,但是需要服务器支持,如果服务器支持的话,就不需要用到ajax,直接原生代码也就几行而已,在这里再强调一次:jsonp不是想调用就可以调用的,一定要服务器支持jsonp格式调用,返回的是一个封装的函数才行,并不是能返回json就可以返回jsonp。

    允许跨域模式

      这种模式需要

        1:在服务器端返回的头部上加上  Access-Control-Allow-Origin:* 这样的文件头,表示服务器端允许跨域,但是这只是仅仅服务器端的允许而已。

        2:在客户端,如果是现代浏览器都可以支持给服务器发送请求,也就是如果服务器允许的话就可以直接调用了,但是,如果是ie的话,不能用XMLHttpRequest对象,这样浏览器上在opne()的时候就直接报错了,因为浏览器不允许,你如果改变下ie的internet设置,安全—>自定义级别-->跨域访问数据 允许的话,那你就可以看到数据了,不然的话就需要使用  XDomainRequest 这个对象了,但是老夫昨夜忘记了。。。。。今天晚上回去测试,再更新博文,怕忘记就先记录下来,恩,经过老夫实测,ie7和以上的版本都是可以通过XDomainRequest来请求相关数据,但是问题是不能设置请求头,所以还不知道怎么发送一个json的请求和回复。

  注意:在使用 XMLHttpRequest对象的时候不知道为什么如果是直接打开一个本地html就可以访问到跨域数据,但是如果是放在服务器上就不能够了,报的是没有权限错误,需要使用XDomainRequest

原文地址:https://www.cnblogs.com/yansi/p/3208044.html