Suche senden
Hochladen
那些年,我们一起跨过域
•
Als PPTX, PDF herunterladen
•
16 gefällt mir
•
5,085 views
K
ksky521
Folgen
Melden
Teilen
Melden
Teilen
1 von 27
Jetzt herunterladen
Empfohlen
淘宝前端技术巡礼
淘宝前端技术巡礼
jay li
Html&css培训 舒克
Html&css培训 舒克
jay li
Html5
Html5
cazhfe
前端跨域总结
前端跨域总结
zhangsuoyong
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关
jay li
Responsive Web UI Design
Responsive Web UI Design
jay li
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
jay li
Empfohlen
淘宝前端技术巡礼
淘宝前端技术巡礼
jay li
Html&css培训 舒克
Html&css培训 舒克
jay li
Html5
Html5
cazhfe
前端跨域总结
前端跨域总结
zhangsuoyong
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关
jay li
Responsive Web UI Design
Responsive Web UI Design
jay li
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
jay li
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
Chieh Lin
Clientside attack using HoneyClient Technology
Clientside attack using HoneyClient Technology
Julia Yu-Chin Cheng
Web dev road map part one
Web dev road map part one
安 闫
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
Joseph Chiang
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
taobao.com
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
leneli
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
kumawu
犀牛书第六版
犀牛书第六版
jay li
Javascript stacktrace
Javascript stacktrace
cazhfe
第九章解答
第九章解答
jiannrong
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
Joseph Chiang
快速定位开发常见的前端问题
快速定位开发常见的前端问题
taobao.com
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
zhangsuoyong
非常靠谱 Html 5
非常靠谱 Html 5
Tony Deng
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
HTML5概览
HTML5概览
Adam Lu
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Jackson Tian
高性能网站最佳实践
高性能网站最佳实践
longhao
客户端存储与计算
客户端存储与计算
xiaotao ning
Real time web实时信息流推送
Real time web实时信息流推送
yongboy
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
yongboy
Weitere ähnliche Inhalte
Was ist angesagt?
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
Chieh Lin
Clientside attack using HoneyClient Technology
Clientside attack using HoneyClient Technology
Julia Yu-Chin Cheng
Web dev road map part one
Web dev road map part one
安 闫
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
Joseph Chiang
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
taobao.com
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
leneli
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
kumawu
犀牛书第六版
犀牛书第六版
jay li
Javascript stacktrace
Javascript stacktrace
cazhfe
第九章解答
第九章解答
jiannrong
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
Joseph Chiang
快速定位开发常见的前端问题
快速定位开发常见的前端问题
taobao.com
Was ist angesagt?
(13)
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
Clientside attack using HoneyClient Technology
Clientside attack using HoneyClient Technology
Web dev road map part one
Web dev road map part one
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
犀牛书第六版
犀牛书第六版
Javascript stacktrace
Javascript stacktrace
第九章解答
第九章解答
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
快速定位开发常见的前端问题
快速定位开发常见的前端问题
Ähnlich wie 那些年,我们一起跨过域
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
zhangsuoyong
非常靠谱 Html 5
非常靠谱 Html 5
Tony Deng
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
HTML5概览
HTML5概览
Adam Lu
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Jackson Tian
高性能网站最佳实践
高性能网站最佳实践
longhao
客户端存储与计算
客户端存储与计算
xiaotao ning
Real time web实时信息流推送
Real time web实时信息流推送
yongboy
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
yongboy
PHP WEB 应用组织与结构
PHP WEB 应用组织与结构
HonestQiao
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
leneli
赶集团购开发总结4
赶集团购开发总结4
yangdj
Html5和css3入门
Html5和css3入门
Xiujun Ma
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
yangdj
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
GO LL
Html5form
Html5form
jay li
EventProxy introduction - JacksonTian
EventProxy introduction - JacksonTian
Jackson Tian
Event proxy introduction
Event proxy introduction
mysqlops
Inside the browser
Inside the browser
otakustay
D2-ETao-show
D2-ETao-show
leneli
Ähnlich wie 那些年,我们一起跨过域
(20)
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
非常靠谱 Html 5
非常靠谱 Html 5
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
HTML5概览
HTML5概览
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
高性能网站最佳实践
高性能网站最佳实践
客户端存储与计算
客户端存储与计算
Real time web实时信息流推送
Real time web实时信息流推送
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
PHP WEB 应用组织与结构
PHP WEB 应用组织与结构
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
赶集团购开发总结4
赶集团购开发总结4
Html5和css3入门
Html5和css3入门
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
Html5form
Html5form
EventProxy introduction - JacksonTian
EventProxy introduction - JacksonTian
Event proxy introduction
Event proxy introduction
Inside the browser
Inside the browser
D2-ETao-show
D2-ETao-show
那些年,我们一起跨过域
1.
那些年,我们一起跨过域
Theowang
2.
讨论什么? 我们不神化跨域方法,跨域没有完美 我们不罗列跨域方法,不讲n大跨域方法 我们解决工作遇见的跨域问题,偏实战
3.
其实这是个古老而又猥琐的话题 为什么要跨域呢?
什么情况是跨域? 我要自适应高度 子域名不同 我要实现多域名单点登录 主域名不同 我要和第三方网站通信 协议不同 我要跨域种cookie 端口不同 我要…… 2012-6-7 3
4.
我们要说的跨域方法 document.domain location.hash
window.name postMessage flash
5.
iframe Tips
父窗口获取子窗口的window对象方法 Iframe.contentWindow 父窗口获取子窗口document对象方法 iframe.contentWindow.document || iframe.contentDocument; document.frames[id].document; //IE6-7 子窗口获取父窗口window对象 parent iframe父窗口和子窗口通信符合同源策略 即同域名下才可以进行window和dom操作 使用JavaScript在IE和Firefox下进行iframe的DOM操作 2012-6-7 5
6.
http://www.qq.com/
<iframe id=“iframe” src=“iframe.html”> var iframe = document.getElementById('iframe'); var iframeWin = iframe.contentWindow; var someFn = function(){}; http://www.qq.com/iframe.html var pSomeFn = parent.someFn; Iframe之间操作window对象 查看在线demo 2012-6-7 6
7.
准备好了吗?
8.
document.domain 原理: 化跨域通信问题为frame之间的跨域操作 两个不同子域名通过设置 document.domain='主 域名' 获取操作对方的跨域权限
9.
http://4.qdemo.sinaapp.com/xdomain/document.domain/
document.domain = 'sinaapp.com'; var iframe = document.getElementById('iframe'); var iframeWin = iframe.contentWindow; var iframeXHR = iframeWin.xmlHttp(); http://dali.sinaapp.com/proxy.htm document.domain = 'sinaapp.com'; xmlHttp = function() { return new XMLHttpRequest();}; Document.domain跨域实例 查看在线demo 2012-6-7 9
10.
Document.domain跨域优缺点
子域名双向跨域 安全!!! post/get轻松搞定 不能跨主域名 跟本域操作无异 优点 缺点 2012-6-7 10
11.
location.hash 原理: hash指的是url中#之后的部分,跨域时通过 iframe.src设置,子窗口通过location.hash取到 设置url的hash不需要页面跳转,而是当前页面锚 点跳转
12.
http://js8.in/demos/xdomain/location.hash/
document.getElementById('iframe').src = proxyHost + '#'+val; http://dali.sinaapp.com/proxy.htm window.onhashchange = hashchange;//不支持用定时器 http://js8.in/demos/xdomain/location.hash/parentproxy.htm var hash = location.hash.substr(1).split('='); var height = hash[1]; parent.parent.setHeigth(height); Location.hash跨域实例 查看在线demo 2012-6-7 12
13.
Location.hash跨域优缺点
可跨主域名 产生浏览器历史记录 操作简单 受URL长度限制 可以双向跨域 优点 缺点 2012-6-7 13
14.
window.name 原理: window.name属性可以在不同域下访问,当 iframe的url改变也不改变name的值 页面建立setTimeout/setInterval监听 window.name变化
15.
http://js8.in/demos/xdomain/window.name/
doc.getElementById(„iframeA‟).contentWindow.name = value; http://4.qdemo.sinaapp.com/xdomain/window.name/proxy.html var hash = window.name; setInterval(function(){ if (window.name !== hash) { hash = window.name; cb.call(window, hash); } }, 50); Window.name跨域实例 查看在线demo(IE6-7) 2012-6-7 15
16.
window.name跨域优缺点
可跨主域名 只有IE6-7等低版本浏 操作简单 览器支持 可以双向跨域 通信数据量不大 优点 缺点 2012-6-7 16
17.
postMessage 原理:
html5新增的postMessage方法,通过 postMessage来传递信息,对方可以通过监听 message事件来监听信息 2012-6-7 17
18.
postMessage浏览器支持情况
19.
http://js8.in/demos/xdomain/postmessage/
var ifr = doc.getElementById('iframeA').contentWindow; ifr.postMessage(data,'*'); http://4.qdemo.sinaapp.com/xdomain/postmessage/proxy.html //监听 Win.addEventListener("message",function(e){ cb.call(win,e.data); },false); //发送 var ifr = win.parent; ifr.postMessage(data,'*'); PostMessage跨域实例 查看在线demo(需要支持postMessage浏览器) 2012-6-7 19
20.
postMessage跨域优缺点
Html5原生支持 可跨主域名 需要浏览器支持html5 可以双向跨域 可控制跨域域名 优点 缺点 2012-6-7 20
21.
Flash跨域 原理: 利用flash的URLLoader,也可以轻松实现跨域数据交互 只要站点B的跨域策略文件(crossdomain.xml)中包含了站 点A Flash提供ExternalInterface接口与JavaScript通信, ExternalInterface有两个方法,call和addCallback,call的 作用是让Flash调用js里的方法,addCallback是用来注册 flash函数让js调用
22.
http://js8.in/demos/xdomain/flash/
引入crossxhr.js,创建swf: http://js8.in/demos/xdomain/flash/crossxhr.swf http://4.qdemo.sinaapp.com/crossdomain.xml <?xml version="1.0" encoding="UTF-8"?> <cross-domain-policy> <allow-access-from domain="js8.in"/> </cross-domain-policy> flash跨域实例 查看在线demo 2012-6-7 22
23.
flash跨域优缺点
可跨主域名 需要浏览器flash插件 可以双向跨域 开发成本大 可控制跨域域名 优点 缺点 2012-6-7 23
24.
PK
优点 缺点 适合场景 子域名间无障碍通 不能跨主域,安全 跨子域,安全性高 document.domain 信 性 简单,跨主域,可 url限制(ie4k, 简单需求,例如高 location.hash 双向 ff40k),历史记录 度自适应 简单,跨主域,可 数据量限制,只有 配合其他跨域方式 window.name 双向 IE6-7支持 命令式跨域 跨主域,可双向 html5限制 可与其他跨域方式 postMessage ,Html5原生支持, 组合的命令式跨域 可控制访问域名 跨主域,可双向, flash限制,开发相 一般通过控制跨域 flash 可控制跨域域名 对复杂 域名来单向跨域
25.
好吧,我们也凑齐十大跨域方式 JSONP 后端代理
表单+重定向callback(一般用于跨域上传图片) 跨域资源共享(CORS) Flash LocalConnection
26.
跨域开源项目 CrossXHR:flash easyXDM:flash+postMessage+win.name
AJAXCDR:flash
27.
Q&A Thanks
Jetzt herunterladen