版权声明:避免百度一下通片同一篇文章,未经博主允许不得转载。本博客作为笔记使用,正确性请自行验证。 https://blog.csdn.net/u014071104/article/details/80361888

这篇文章纯属湿货。

随着MVVM框架的大行其道,前端接触网路请求的机会越来越普及。

跨域也开始成为开发的家常便饭。

跨域处理方法有以下几点:

  1. iframe
  2. script(JSONP)
  3. cors

iframe是N年前 的东西,在邮件网站上可以看到它的影子

JSONP一直都存在,在PC上没兼容问题,并且使用方便,局限是只能通过get方式发送数据

CORS可以让前端在某些情况下可以像不跨域一样请求数据,所以我们这篇只说它。

CORS配置主要在后端

可以参考:阮一峰的博客

IE8&IE9上不能使用XMLHttpRequest来通过cors来处理跨域,他们提供了一个特别的对象XDomainRequest来处理CORS跨域通讯。

可以参考:CORS

它的回掉函数和XMLHttpRequest基本一致,这里不重叙。

下面只要说几个坑点:

1.要保持请求协议和当前访问网站的协议一致。

例如:浏览器地址栏的协议是https,那么你的XDomainRequest只能发起https请求,否则“拒绝访问”

2. 如果你使用vue同时使用CORS,想要兼容IE8!不用多想了。

XDomainRequest是支持IE8 CORS的,但是vue不支持,这个锅并不是XDomainRequest的,XDomainRequest不背(●'◡'●)。

贴代码:

  1. return new Promise((resolve, reject) => {
    let appliance = new window.XDomainRequest()
    appliance.onprogress = function () { }; // no aborting
    appliance.ontimeout = function () {
    // alert("timeout")
    reject({ eror: "timeout" });
    }; // "
    appliance.onload = function (e) {
    // do something with appliance.responseText
    // alert("onload" + appliance.responseText)
    resolve(appliance.responseText);
    };
    appliance.onerror = function (e, b) {
    // error handling
    // alert("error" + JSON.stringify(e) + JSON.stringify(b))
    reject({ eror: e });
    };
    //appliance.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    appliance.withCredentials = true; // to support sending cookies with CORS
    appliance.open("POST", axios.defaults.baseURL + url);
    appliance.send(dataToString);
    });

2018-05-31更新:

可以发送请求,但是无法携带数据

XDomainRequest IE8&IE9 cors 跨域通讯的处理方法的更多相关文章

  1. Springboot 配置cors 跨域的几种方法

    作记录用 请参考https://blog.csdn.net/lizc_lizc/article/details/81155895 第一种: 在每个controller上添加 @CrossOrigin ...

  2. 填个小坑,Vue不支持IE8及以下,跨域ajax不支持IE9

    这特么就尴尬了,说好的Vue支持IE8及以下的呢,引入jquery,测试IE个浏览器,IE9仍然显示不正常, 然而命令行测试Vue仍然存在, 数据回不来!数据回不来!数据回不来! 好吧  肉包子打狗$ ...

  3. CORS——跨域请求那些事儿

    在日常的项目开发时会不可避免的需要进行跨域操作,而在实际进行跨域请求时,经常会遇到类似 No 'Access-Control-Allow-Origin' header is present on th ...

  4. IE9 下面, XMLHttpRequest 是不支持跨域请求的解决方法

    在 IE9 下面, XMLHttpRequest 是不支持跨域请求的. IE10 的 XMLHttpRequest 支持跨域, 而 IE8, IE9 需要使用 XDomainRequest 来实现跨域 ...

  5. 一篇文章搞明白CORS跨域

    面试问到数据交互的时候,经常会问跨域如何处理.大部分人都会回答JSONP,然后面试官紧接着就会问:"JSONP缺点是什么啊?"这个时候坑就来了,如果面试者说它支持GET方式,然后面 ...

  6. 跨域问题及其解决方法(JSONP&CORS)

    一.什么是跨域 当a.qq.com域名下的页⾯或脚本试图去请求b.qq.com域名下的资源时,就是典型的跨域行为.跨域的定义从受限范围可以分为两种,⼴义跨域和狭义跨域. (一)广义跨域 ⼴义跨域通常包 ...

  7. CORS跨域资源共享你该知道的事儿

    "唠嗑之前,一些客套话" CORS跨域资源共享,这个话题大家一定不陌生了,吃久了大转转公众号的深度技术好文,也该吃点儿小米粥溜溜胃里的缝儿了,今天咱们就再好好屡屡CORS跨域资源共 ...

  8. 彻底理解CORS跨域原理

    背景 现在的前端开发中都是前后端分离的开发模式,数据的获取并非同源,所以跨域的问题在我们日常开发中特别常见.其实这种资料网上也是一搜一大堆,但是都不够全面,理解起来也不够透彻.这篇文章就结合具体的示例 ...

  9. jsonp与cors跨域的一些理解(转)

    CORS其实出现时间不短了,它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源.而这种访问是被同源策略所禁止的. ...

随机推荐

  1. linux下安装python3.6.6

    1.到python的官网去下载python3.6.3安装包,必须是Linux版本的 2.在/usr/tmp下下载python安装包 wget https://www.python.org/ftp/py ...

  2. vue中router-link的详细用法

    官网文档地址:https://router.vuejs.org/zh/api/#to 今天项目突然有需求,让vue中的一个页面跳转到另一个页面 // 字符串 <router-link to=&q ...

  3. ICEM-缺角正方体(拓块)

    ​原视频下载地址:https://yunpan.cn/cqFIqQWrNqzNc  访问密码 6fb4

  4. pc电源cpu插座和显卡插座

    cpu插座是8口的,一般4+4 显卡插座是6口的,也有8口的用6+2 6+2的中2有一个小边,组合成8口也不能插入cpu插座.

  5. 按比例吃CPU

    前几天测试软件在多核上的性能,需要按照比例吃各个CPU,查了查资料,撸了下面一小段代码: #include <unistd.h> #include <stdlib.h> #in ...

  6. js的一些笔试面试题

    1. 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母.数字.下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test ...

  7. python何时用list,dict,set

    从读取的角度来讲: 看是用来随机读取(查询)还是连续读取. list数组集中存放,连续读取效率高(具体还没测试,理论上应该如此). dict散列表,使用hash计算存放的位置,随机读取效率高. 随机读 ...

  8. Linux中 mkdir 创建文件夹命令

    语法 mkdir (选项)(参数) 选项 -Z:设置安全上下文,当使用SELinux时有效: -m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限: -p或- ...

  9. THINKPHP扩展PHPEXCEL,PHP7.2以上版本无法导出Excel

     THINKPHP扩展PHPEXCEL与PHP7.3高版本兼容问题 框架:THINKPHP5,PHPEXCEL版本:1.81 无法导出EXCEL原因为Shared/OLE.php第290行使用cont ...

  10. 记一次用WireShark抓包摆脱Si服后台限制的过程

    背景:闲着无聊找了个小众的手游,因为手游都是比较吃金的,所以就找了个Si服,鉴于小时候宝可梦的情怀,就TB买了个GM后台.谁知这玩意有限制,到了100级之后升级超级难,最多只能发送99999W点经验, ...