博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跨域请求
阅读量:5110 次
发布时间:2019-06-13

本文共 1288 字,大约阅读时间需要 4 分钟。

      前后台交互的主要技术是ajax,他的核心对象是XMLHttpRequest(XHR)对象,但受同源策略的限制(相同的域、相同的端口、相同的协议),试图访问上述限制之外的资源,都会引发安全错误。

(1)采用被认可的跨于解决方案CORS(Cross-Origin Resource Sharing,跨域资源共享),IE8通过XDomainRequest(XDR)对象支持CORS,其他浏览器通过XHR对象原生支持CORS。

(2)图像Ping:动态创建图像经常用于图像Ping,它是与服务器进行简单。单向跨域通信的一种方式。请求的数据通过查询字符串的形式发送,由于浏览器得不到任何具体的数据,所以可以侦听load和error事件,知道响应是什么时候侦听到的。图像Ping最常用于跟踪用户点击页面或动动态广告曝光次数。有两个主要缺点:一是只能发送GET请求,二是无法响应服务器的文本。

(3)JSONP是通过动态创建<script>元素使用的,可以为src属性指定一个跨域URL。能够直接访问文本,支持双向通信。两个不足:一是如果其他域不安全,很可能会在响应中夹带一些恶意代码;二是不容易确定JSONP请求是否失败,html5中给<script>元素新增了一个onerror事件处理程序,但目前没有浏览器支持。为此,开发人员要使用计时器检测指定时间内是否接收到了响应。

Function handleResponse(response){

      alert(“you’re at IP address”+response.ip+”which is in”+response.city+”,”+response.name);

}

var script=document.createElement(“script”);

Script.src=”http://freegeoip.net/json/?callback=handleResponse” ;

document.body.insertBefore(script,document.body.firstChild);

【注】:图像Ping和JSONP不如CORS稳妥;

(3)Comet是对ajax的进一步扩展,让服务器几乎能够实时的向客户端推送数据,实现Comet的手段主要有两个:长轮询和HTTP流。所有浏览器都支持长轮询,而只有部分浏览器原生支持HTTP流。SSE(Sever-Sent Events,服务器发送事件)是一种实现Comet交互的浏览器API,即支持长轮询,有支持HTTP流。

(4)Web Sockets是一种与服务器进行全双工、双向通信的信道。与其他方案不同,Web Sockets不使用HTTP协议,使用一种自定义协议。这种协议专门为快速传输小数据设计,因此非常适合移动应用。由于使用了自定义协议,所以URL模式也略有不同,未加密连接由http://变成ws://;加密连接由https://变成wss://。

转载于:https://www.cnblogs.com/n-q-y/p/4491017.html

你可能感兴趣的文章
unity2d之速度和加速度模拟
查看>>
unity3d之从3ds max导入素材到unity中的设置
查看>>
操作系统知识总结
查看>>
springboot多环境下maven打包
查看>>
【转】[钉钉通知系列]Jenkins发布后自动通知
查看>>
欧拉函数模板
查看>>
为什么 jmeter 分布式测试,一定要设置 java.rmi.server.hostname
查看>>
爱牛网站
查看>>
Windows系统SNMP数据监测与OID
查看>>
在CMD命令行下关闭进程的命令
查看>>
resin
查看>>
flow类型检查
查看>>
「Luogu P3183」[HAOI2016]食物链 解题报告
查看>>
腾讯云Ubuntu安装JDK和Tomcat
查看>>
JQuery基本知识、选择器、事件、DOM操作、动画
查看>>
java虚拟机(十一)--GC日志分析
查看>>
工作外的八小时,才能决定你究竟会成为一个什么样的人(转)
查看>>
Net学习日记_三层_1_登录页面总结篇_残缺版
查看>>
文件的操作
查看>>
linux shell 中"2>&1"含义
查看>>