1.Jsonp、document.domain+iframe、window.name、window.postMessage、服务器上设置代理页面。

2.Jsonp(json with padding) 是 Json 的一种"使用模式",可以让网页从别的网站获取资料,即跨域读取数据,Jsonp的原理是动态插入script标签。

3.为什么我们从不同的域(网站)访问数据需要一个特殊的技术(jsonp)呢?

这是因为同源策略。协议,域名,端口相同,它是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的属性。

http://segmentfault.com/a/1190000000718840

为什么要有同源限制?

我们举例说明:比如一个黑客程序,他利用Iframe把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名,密码登录时,他的页面就可以通过Javascript读取到你的表单中input中的内容,这样用户名,密码就轻松到手了。

jsonp的原理是动态插入script标签

跨子域可以采用iframe proxy的方式,支持GET和POST,支持异步POST。缺点是:范围较窄,限定在“跨子域”,而且需要在目标服务器增加额外的文件。

JSONP的方式,支持双向通信。只支持GET。缺点是:不支持POST,同时需要目标服务器在服务端支持。

iframe的window.name的方式,支持跨主域。缺点是:不支持POST,不过已经很赞了:)

HTML5 postMessage,支持双向通信。缺点是:仅限于HTML5。结合window.name的方式,就很赞了

iframe + location.hash的方式跨主域,功能强大,兼容性好,支持跨域的js调用,支持双向通信。缺点是:太复杂,会嵌套太多的iframe,同时数据直接写在url中,数据大小受限而且数据暴露在外。

利用Flash跨域,优点是支持强大,相对简单。缺点是:依赖flash,需要在服务器更目录放置crossdomain.xml文件。

跨域方式,CORS、JSONP、WebSocket。不同子域松散到同一个父域,实现同一父域下的跨域,又提了一下JSONP。

JSONP的js文件调用客户端函数。客户端能够载入跨域的js资源,js文件载入后会自己执行。用url中hash字段传递数据就是iframe实现跨域数据传递。博客园关于AJAX的跨域问题http://www.cnblogs.com/ww-ervin-72/archive/2016/02/18/5199210.html

异步加载和延迟加载

1.异步加载的方案: 动态插入script标签

2.通过ajax去获取js代码,然后通过eval执行

3.script标签上添加defer或者async属性

4.创建并插入iframe,让它异步执行js

5.延迟加载:有些 js 代码并不是页面初始化的时候就立刻需要的,而稍后的某些情况才需要的。

Ajax跨域通信方法的更多相关文章

  1. 解决ajax跨域的方法原理详解之Cors方法

    1.神马是跨域(Cross Domain)   对于端口和协议的不同,只能通过后台来解决.   一句话:同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是 跨域问题了.而为什么开 ...

  2. 黄聪:利用iframe实现ajax 跨域通信的解决方案(转)

    原文:http://www.cnblogs.com/xueming/archive/2013/02/01/crossdomainajax.html 在漫长的前端开发旅途上,无可避免的会接触到ajax, ...

  3. ajax跨域--jsop方法

    1.什么是JSONP? 要了解JSONP,不得不提一下JSON,那么什么是json ? json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表 ...

  4. ASP.NET MVC 实现AJAX跨域请求方法《1》

    ASP.NET MVC 实现AJAX跨域请求的两种方法 通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据 ...

  5. ajax 跨域解决方法

    最近在开发过程中,使用ajax去异步调取图片.在开发中这个功能没什么问题,可以后来提测,重新部署之后就有问题了,这就是ajax的跨域问题. ajax核心对象XMLHttpRequest本身是不支持跨域 ...

  6. 转载的别人的ajax跨域解决方法

    http://dynamic.vip.xxxxxx.com/active/<controllers>/<active>/<id> 放在浏览器地址栏中访问可以得到正确 ...

  7. AJAX跨域问题解决方法(4)——调用方解决跨域

    调用方解决跨域的方法只有一种,那就是隐藏跨域. 何为隐藏跨域? 隐藏跨域的核心思路是通过反向代理隐藏跨域以欺骗浏览器 什么是反向代理?反向代理是指通过中间服务器使得访问同一个域名的两个不同url最终会 ...

  8. AJAX跨域问题解决方法(3)——被调用方解决跨域

    被调用方解决跨域是指在HTTP响应头中增加指定的字段,允许调用方调用 可以在两种地方增加1.apache/nginx(HTTP服务器)2.tomcat(应用服务器) 浏览器如何判断跨域?仔细观察可以发 ...

  9. AJAX跨域问题解决方法(2)——JSONP解决跨域

    JSONP是什么?JSON全称为JSON with Padding,是JSON的一种补充的使用方式,不是官方协议. 使用JSONP服务器后台要改动吗?JSONP不同于一般的ajax请求返回json对象 ...

随机推荐

  1. 二分图最大匹配的K&#246;nig定理及其证明

     二分图最大匹配的K?nig定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把K?nig定理证了,其它的废话一概没有.    以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上 ...

  2. php面试题之四——Linux部分(高级部分)

    四.Linux部分 1.请解释下列10个shell命令的用途(新浪网技术部) top.ps.mv.find.df.cat.chmod.chgrp.grep.wc top:该命令提供了实时对系统处理器状 ...

  3. invert

    http://docs.ruby-lang.org/en/2.0.0/Hash.html invert → new_hash Returns a new hash created by using h ...

  4. [codeforces 325]B. Stadium and Games

    [codeforces 325]B. Stadium and Games 试题描述 Daniel is organizing a football tournament. He has come up ...

  5. Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

    原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  6. Leetcode 之Convert Sorted List to Binary Search Tree(55)

    和上题思路基本一致,不同的地方在于,链表不能随机访问中间元素. int listLength(ListNode* node) { ; while (node) { n++; node = node-& ...

  7. iPhone取消软件更新上边的1

    去除设置的更新+1小红点提示主要分为越狱和非越狱设备两种方法. 越狱状态下方法: 首先将你的设备进行越狱: 越狱后安装ifile(这个自行搜索安装): 用ifile打开/System/Library/ ...

  8. [转]Ubuntu 系统 Update-rc.d 命令

    本文转自:http://wangyan.org/blog/ubuntu-update-rc-d.html 以防止原博客挂掉,特此做了备份. Ubuntu或者Debian系统中update-rc.d命令 ...

  9. 8个开发必备的PHP功能

    做过PHP开发的程序员应该清楚,PHP中有很多内置的功能,掌握了它们,可以帮助你在做PHP开发时更加得心应手,本文将分享8个开发必备的PHP功能,个个都非常实用,希望各位PHP开发者能够掌握. 1.传 ...

  10. C++ virtual descructor

    [代码1]  C++ Code  12345678910111213141516171819202122232425262728293031323334353637383940414243444546 ...