XDomainRequest IE8&IE9 cors 跨域通讯的处理方法
这篇文章纯属湿货。
随着MVVM框架的大行其道,前端接触网路请求的机会越来越普及。
跨域也开始成为开发的家常便饭。
跨域处理方法有以下几点:
- iframe
- script(JSONP)
- 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不背(●'◡'●)。
贴代码:
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 跨域通讯的处理方法的更多相关文章
- Springboot 配置cors 跨域的几种方法
作记录用 请参考https://blog.csdn.net/lizc_lizc/article/details/81155895 第一种: 在每个controller上添加 @CrossOrigin ...
- 填个小坑,Vue不支持IE8及以下,跨域ajax不支持IE9
这特么就尴尬了,说好的Vue支持IE8及以下的呢,引入jquery,测试IE个浏览器,IE9仍然显示不正常, 然而命令行测试Vue仍然存在, 数据回不来!数据回不来!数据回不来! 好吧 肉包子打狗$ ...
- CORS——跨域请求那些事儿
在日常的项目开发时会不可避免的需要进行跨域操作,而在实际进行跨域请求时,经常会遇到类似 No 'Access-Control-Allow-Origin' header is present on th ...
- IE9 下面, XMLHttpRequest 是不支持跨域请求的解决方法
在 IE9 下面, XMLHttpRequest 是不支持跨域请求的. IE10 的 XMLHttpRequest 支持跨域, 而 IE8, IE9 需要使用 XDomainRequest 来实现跨域 ...
- 一篇文章搞明白CORS跨域
面试问到数据交互的时候,经常会问跨域如何处理.大部分人都会回答JSONP,然后面试官紧接着就会问:"JSONP缺点是什么啊?"这个时候坑就来了,如果面试者说它支持GET方式,然后面 ...
- 跨域问题及其解决方法(JSONP&CORS)
一.什么是跨域 当a.qq.com域名下的页⾯或脚本试图去请求b.qq.com域名下的资源时,就是典型的跨域行为.跨域的定义从受限范围可以分为两种,⼴义跨域和狭义跨域. (一)广义跨域 ⼴义跨域通常包 ...
- CORS跨域资源共享你该知道的事儿
"唠嗑之前,一些客套话" CORS跨域资源共享,这个话题大家一定不陌生了,吃久了大转转公众号的深度技术好文,也该吃点儿小米粥溜溜胃里的缝儿了,今天咱们就再好好屡屡CORS跨域资源共 ...
- 彻底理解CORS跨域原理
背景 现在的前端开发中都是前后端分离的开发模式,数据的获取并非同源,所以跨域的问题在我们日常开发中特别常见.其实这种资料网上也是一搜一大堆,但是都不够全面,理解起来也不够透彻.这篇文章就结合具体的示例 ...
- jsonp与cors跨域的一些理解(转)
CORS其实出现时间不短了,它在维基百科上的定义是:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源.而这种访问是被同源策略所禁止的. ...
随机推荐
- JavaEE的ajax入门
JavaEE的ajax入门 代码下载 链接:https://pan.baidu.com/s/1pb_sdSmV9Ncs6UIz3q2ztg 提取码:fgx6 复制这段内容后打开百度网盘手机App,操作 ...
- Smali语法基础
Smali是什么 Smali是Android虚拟机的反汇编语言. 我们都知道,Android代码一般是用java编写的,执行java程序一般需要用到java虚拟机,在Android平台上也不例外,但是 ...
- ansible 错误记录(1)
基本环境:docker基于centos7 在docker里面安装ansible 不管是在root还是普通用户下执行 ansible all -m ping 都报如下错误: 172.20.1.1 | ...
- nginx 转发 header 数据丢失
刚帮同事解决了个问题,记录一下,现象:放在header里面的数据,本地后台可以收到,集成可以收到,测试不行, 查看代码没问题,排除代码问题,比较集成和测试环境有何不同,发现集成环境是局域网访问,192 ...
- MovingWallVelocity边界条件【翻译】
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/59646-movingwallvelocity-bound ...
- Gitlab 服务器搭建
一.官网地址 首页:https://about.gitlab.com/ 安装说明:https://about.gitlab.com/installation/ 二.安装命令摘录 实际问题:yum 安装 ...
- 【原】Python基础-循环语句
x = 1while x <= 10: print(x) x += 1 password = ""while password != "3213554": ...
- arcgis python 异常处理和信息处理
#coding=utf8 import arcpy import os import sys import ylpy try: a=1111111 b=0000 c=a/b except Except ...
- python -- 安装+pip+requests
python3 安装库 sudo python3 -m pip install beautifulsoup4 步骤1:安装pyenv 为了能顺利的将系统的python和下载的python版本呼唤, ...
- Mybatis xml mapper 特殊写法总结
项目告一段落,业务代码也写得差不多了,框架仍然用的是 ssm ,为了省去单表数据库操作的代码编写,继续用 mybatis generator 生成单表对应的实体类.dao层映射关联及配置文件,私下还尝 ...