zoukankan      html  css  js  c++  java
  • 自我学习——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

  • 相关阅读:
    Axiom3D:资源引用与加载基本流程.
    实践:C++平台迁移以及如何用C#做C++包装层
    Axiom3D:Buffer漫谈
    CSS: hover选择器的使用
    TTS 语音修复 ,缺少文件的,没注册类的
    sqlserver 查找某个字段在哪张表里
    Excel 表格查找重复数据,去重复统计
    C# HttpWebResponse WebClient 基础连接已经关闭: 发送时发生错误.
    C# 控件置于最顶层、最底层
    C# 线程 正确使用Thread.Join()停止方式
  • 原文地址:https://www.cnblogs.com/yansi/p/3208044.html
Copyright © 2011-2022 走看看