JavaScript跨域解决专项方案.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Javascript 跨域访问处理方案 在用户端编程语言中,如javascript和ActionScript,同源策略是一个很关键安全理念,它在确保数据安全性方面有着关键意义。同 源策略要求跨域之间脚本是隔离,一个域脚本不能访问和操作另外一个域绝大部分属性和方法。那么什么叫相同域,什么叫不一样域呢?   同源策略   在用户端编程语言中,如javascript和 ActionScript,同源策略是一个很关键安全理念,它在确保数据安全性方面有着关键意义。同源策略要求跨域之间脚本是隔离,一个域脚本不能访问和操作另外一个域绝大部分属性和方法。那么什么叫相同域,什么叫不一样域呢?当两个域含有相同协议(如http), 相同端口(如80),相同host(如),那么我们就能够认为它们是相同域。比如 和是同域,而, , , 中任何两个全部将组成跨域。同源策略还应该对部分特殊情况做处理,比如限制file协议下脚本访问权限。当地HTML文件在浏览器中是经过file协议打开,假如脚本能经过file协议访问到硬盘上其它任意文件,就会出现安全隐患,现在IE8还有这么隐患。   受到同源策略影响,跨域资源共享就会受到制约。不过伴随大家实践和浏览器进步,现在在跨域请求技巧上,有很多宝贵经验沉淀和积累。这里我把跨域资源共享分成两种,一个是单向数据请求,还有一个是双向消息通信。接下来我将罗列出常见部分跨域方法,以下跨域实例源代码能够从这里取得。 什么是跨域 JavaScript出于安全方面考虑,不许可跨域调用其它页面对象。但在安全限制同时也给注入iframe或是ajax应用上带来了不少麻烦。这里把包含到跨域部分问题简单地整理一下: 首先什么是跨域,简单地了解就是因为JavaScript同源策略限制, 域名下js无法操作或是域名下对象。更具体说明能够看下表: URL 说明 是否许可通信 /a.js /b.js 同一域名下 许可 /lab/a.js /script/b.js 同一域名下不一样文件夹 许可 :8000/a.js /b.js 同一域名,不一样端口 不许可 /a.js /b.js 同一域名,不一样协议 不许可 /a.js 4/b.js 域名和域名对应ip 不许可 /a.js /b.js 主域相同,子域不一样 不许可 /a.js /b.js 同一域名,不一样二级域名(同上) 不许可(cookie这种情况下也不许可访问) /a.js /b.js 不一样域名 不许可 尤其注意两点: 第一,假如是协议和端口造成跨域问题“前台”是无能为力, 第二:在跨域问题上,域仅仅是经过“URL首部”来识别而不会去尝试判定相同ip地址对应着两个域或两个域是否在同一个ip上。 “URL首部”指tocol +window.location.host,也能够了解为“Domains, protocols and ports must match”。 接下来简单地总结一下在“前台”通常处理跨域措施,后台proxy这种方案牵涉到后台配置,这里就不管述了,有爱好能够看看yahoo这篇文章:《 JavaScript: Use a Web Proxy for Cross-Domain XMLHttpRequest Calls》 1、document.domain+iframe设置 对于主域相同而子域不一样例子,能够经过设置document.domain措施来处理。具体做法是能够在:///b.html两个文件中分别加上document.domain = ‘’;然后经过a.html文件中创建一个iframe,去控制iframecontentDocument,这么两个js文件之间就能够“交互”了。当然这种措施只能处理主域相同而二级域名不一样情况,假如你异想天开把domian设为那显然是会报错地!代码以下: .com上a.html document.domain = ; var ifr = document.createElement(iframe); ifr.src = ; ifr.style.display = none; document.body.appendChild(ifr); ifr.onload = function(){ var doc = ifr.contentDocument || ifr.contentWindow.document; // 在这里操纵b.html alert(doc.getElementsByTagName(h1)[0].childNodes[0].nodeValue); }; 上b.html document.domain = ; 这种方法适适用于{.com, , , }中任何页面相互通信。 备注:某一页面domain默

文档评论(0)

159****1748 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档