oschina

关于JavaScript“跨域”问题的总结

红薯 发布于 2010/04/20 17:54
阅读 3K+
收藏 24
评论 5
JSONP

【深圳】源创会:5.26下午、轰趴馆等你”

什么是同源策略?

同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。这个浏览器策略很旧,从 Netscape Navigator 2.0 版本开始就存在。

URL 说明 是否允许通信
http://www.playgoogle.com/lab/a.js

http://www.playgoogle.com/script/b.js

同一域名下不同文件夹 允许
http://www.playgoogle.com/a.js

http://www.playgoogle.com/b.js

同一域名下 允许
http://www.playgoogle.com:8000/a.js

http://www.playgoogle.com/b.js

同一域名,不同端口 不允许
http://www.playgoogle.com/a.js

https://www.playgoogle.com/b.js

同一域名,不同协议 不允许
http://www.playgoogle.com/a.js

http://61.129.251.35/b.js

域名和域名对应ip 不允许
http://www.playgoogle.com/a.js

http://script.playgoogle.com/b.js

主域相同,子域不同 不允许
http://www.test.com/a.js

http://www.playgoogle.com/b.js

不同域名 不允许

常用的跨域解决方案

jsonp(JSON with Padding): 简单点说,异步请求跨域的服务器端时,不是直接返回数据,而是返回一个js方法,把数据作为参数传过来。这需要服务器端稍作修改,如果只是跨域传递数据 (而不是DOM操作),个人认为这种方式是最好的。参考内容: 使 用 JSONP 实现跨域通信

服务器端代理: 由js请求同源的服务器端,再由服务器端做代理来实现跨域的请求。参考内容: ajax 跨域之服务端代理

动态创建script:虽然浏览器默认禁止了跨域访问,但并不禁止在页面中引用其他域的JS文件,并可以自由执 行引入的JS文件中的function,根据这一点,可以方便地通 过创建script节点的方法来实现完全跨域的通信有点XSS跨站脚本攻击的意思,所以安全性方面需要仔细评估。这也是所有GreaseMonkey的实现方式, 比如sogou的云输入法。

document.domain:仅适用于不同的二级域名之间的跨域访问。

window.name:name 在浏览器环境中是一个全局/window对象的属性,且当在 frame 中加载新页面时,name 的属性值依旧保持不变。通过在 iframe 中加载一个资源,该目标页面将设置 frame 的 name 属性。此 name 属性值可被获取到,以访问 Web 服务发送的信息。参考 使用 window.name 解决跨域问题

window.location.hash:hash可以实现跨域传值从而达到跨域通讯的目标。为了及时捕获 Hash值的修改,需要轮询实现。如果是iframe和主页面不在同一个域下而要进行通讯,这是不错的方式。不过会导致一个问题,在chrome和 firefox这类浏览器中,hash值的修改会在浏览器中保存记录,扰乱正常的前进和后退功能。

iframe 代理:iframe和主页面不在同一个域,但iframe 需要操作主页面的DOM结构,这个时候用iframe代理可实现,比如iframe高度自适应,只要在iframe中再插入一个与主页面同域的 iframe,把参数传递过去即可。

收藏 (24)
加载中
OSCHINA
登录后可查看更多优质内容
使用微信快捷登录
返回顶部
顶部

深圳SEO优化公司温州建网站公司徐州百姓网标王公司塔城阿里店铺运营推荐朝阳网站定制哪家好天津网络推广价格安庆建站哪家好洛阳网站制作鹤壁SEO按天收费德州关键词排名推荐大浪网站优化排名推荐石家庄推广网站推荐阳江网站优化按天收费价格金华网页制作公司福永网站搜索优化推荐九江外贸网站设计哪家好承德百度爱采购报价许昌网络广告推广哪家好保山百度爱采购日照设计网站价格大鹏百姓网标王推广哪家好坂田推广网站岳阳设计网站报价营口优化推荐淮安SEO按天扣费价格长春优化多少钱楚雄SEO按天扣费推荐商洛网站关键词优化公司临沧建网站哪家好临汾网站制作设计多少钱红河网站推广公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化