什么是跨域?常见的跨域的方式都有哪几种
2017-12-08 11:11
453 查看
跨域指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。
同源就是指,域名,协议,端口均相同。
http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)
http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)
这里要注意一下,localhost和127.0.0.1虽然都指向本机,但也属于跨域。
localhost也叫local ,正确的解释是:本地服务器
127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器)
他们的解析通过本机的host文件,windows自动将localhost解析为127.0.0.1
常见的跨域方式
利用jsonp进行跨域。(至于json与jsonp之间的区别,我在另一篇文章中描述过)这种方法就不用介绍了,这也是最常见的跨域方式之一。
window.name+iframe window.name通过在iframe(一般动态创建i)中加载跨域HTML文件来起作用。然后,HTML文件将传递给请求者的字符串内容赋值给window.name。然后,请求者可以检索window.name值作为响应。
window.postMessage() HTML5新特性,可以用来向其他所有的 window 对象发送消息。需要注意的是我们必须要保证所有的脚本执行完才发送 MessageEvent,如果在函数执行的过程中调用了它,就会让后面的函数超时无法执行。
WebSocket WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,同时允许跨域通讯,是server push技术的一种很棒的实现。相关文章,请查看:WebSocket WebSocket-SockJS
图片ping或script标签跨域 图片ping常用于跟踪用户点击页面或动态广告曝光次数。script标签可以得到从其他来源数据,这也是JSONP依赖的根据。
缺点:只能发送Get请求 ,无法访问服务器的响应文本(单向请求)
具体详情请参照八种方式实现跨域请求
同源就是指,域名,协议,端口均相同。
http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)
http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)
这里要注意一下,localhost和127.0.0.1虽然都指向本机,但也属于跨域。
localhost也叫local ,正确的解释是:本地服务器
127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器)
他们的解析通过本机的host文件,windows自动将localhost解析为127.0.0.1
常见的跨域方式
利用jsonp进行跨域。(至于json与jsonp之间的区别,我在另一篇文章中描述过)这种方法就不用介绍了,这也是最常见的跨域方式之一。
window.name+iframe window.name通过在iframe(一般动态创建i)中加载跨域HTML文件来起作用。然后,HTML文件将传递给请求者的字符串内容赋值给window.name。然后,请求者可以检索window.name值作为响应。
window.postMessage() HTML5新特性,可以用来向其他所有的 window 对象发送消息。需要注意的是我们必须要保证所有的脚本执行完才发送 MessageEvent,如果在函数执行的过程中调用了它,就会让后面的函数超时无法执行。
WebSocket WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信,同时允许跨域通讯,是server push技术的一种很棒的实现。相关文章,请查看:WebSocket WebSocket-SockJS
图片ping或script标签跨域 图片ping常用于跟踪用户点击页面或动态广告曝光次数。script标签可以得到从其他来源数据,这也是JSONP依赖的根据。
缺点:只能发送Get请求 ,无法访问服务器的响应文本(单向请求)
具体详情请参照八种方式实现跨域请求
相关文章推荐
- ajax处理跨域有几种方式?实现原理是什么?
- 什么是JS跨域请求?有几种方式可以实现?请简述其中某一种的实现原理?
- 什么是JS跨域请求?有几种方式可以实现?请简述其中某一种的实现原理?
- 设计模式用过哪些,应用场景是什么;单例模式有几种实现方式,代码怎么写?
- jsonp跨域请求的几种方式
- VMware提供了哪几种虚拟机的网络连接方式,有什么不同?
- Vue2 几种常见开局方式
- 探讨跨域请求资源的几种方式(总结)
- Android 常见 View 控件 滑动 和 拖动的几种方式
- .NET中几种常见的传值方式
- 几种常见的跨域技术
- 面试准备(一) 注册广播有哪几种方式,有什么区别
- java中常见创建对象的方式有哪几种?
- C# DataGridView绑定数据源的几种常见方式
- AlertDiadig对话框的几种常见的使用方式
- 常见的跨域方式及原理-第一篇
- ANDROID基础学习笔记_2_几种常见的布局方式
- 跨域的几种方式
- 常见连接数据库的URL几种方式
- Android中WIFI常见的几种加密方式(详细)