首页> 代码> 利用代理页面解决html iframe跨域访问网站问题 下载  打赏  举报
Tandaly的gravatar头像
Tandaly 2014-06-06 17:49:00

利用代理页面解决html iframe跨域访问网站问题

在做项目的时候遇到跨域问题,经过自己的一番摸索终于找到一种解决iframe跨域问题的方案,或许很多人也会遇到这样头疼的问题,希望能尽自己绵薄之力帮助大家。如果不清楚或者有问题的可以留言和私信我,谢谢。

【问题描述】

    在项目中由于许多页面都是连接到其他项目的页面。由菜单连接到其他域页面,再在其他域页面上调用本项目的js用iframe显示其他域的页面,这样就会涉及到安全性问题即跨域问题。报错信息如下

浏览器控制台跨域报错信息:Unsafe JavaScript attempt to access frame with URL xxx from frame with URL xxx Domains, protocols and ports must match.

【分析思路】

    要想解决问题就必须得还原问题本身,那就是重现问题。对于这个问题我就单独写了两个项目来进行模拟测试,并使用iframe来嵌套调用两个项目的页面,把这两个项目分别放在两个不同端口的tomcat下。由于端口不同所以浏览器就会抛出安全异常即跨域问题。

    成功的重现问题后,接下来就是根据错误信息在网上搜寻答案。根据网上给的答案大多数都是设置页面document.domain为同一域,这个方法倒是能解决,但是需要所有页面都这样设置,但在实际项目中往往会有很多页面而无法每个页面都设置,逐放弃之。后来几经琢磨想到了利用代理页面,就好像访问本项目页面一样,再结合之前弄打印页面采用自动创建iframe来加载别的页面(即中间页面/代理页面),结果通过这种方式还真有效。

【具体解决方法】

     把site1和site2项目分别放在不同端口的tomcat下运行,访问site1的index.html页面,这是入口页面。在site1的index.html页面中用iframe访问显示site2的index.html页面,再通过操作site2的index.html页面调用site1的index.html页面中的方法excute,要调用此方法就要利用到中间代理页面site1中的iframe.html,这个是一个关键页面,因为所有需要跨域的访问都要通过这个页面来调用site1项目中的代码。这样就形成了自己调用自己的代码也就不会出现跨域了。在这个执行过程中site2的index.html页面中的crossFrame方法起到了关键作用,就是通过它来调用代理页面的。

项目截图

利用代理页面解决html iframe跨域访问网站问题

Site1/index.html

利用代理页面解决html iframe跨域访问网站问题

Site2/index.html

利用代理页面解决html iframe跨域访问网站问题

Site1/iframe.html

利用代理页面解决html iframe跨域访问网站问题

 

访问site1/index.html

运行截图:

利用代理页面解决html iframe跨域访问网站问题

参考资料:

什么是跨域

我们经常会在页面上使用ajax请求访问其他服务器的数据,此时,客户端会出现跨域问题.

跨域问题是由于javascript语言安全限制中的同源策略造成的.

简单来说,同源策略是指一段脚本只能读取来自同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合.

例如:

URL 说明 是否允许通信
http://www.a.com/a.js 
http://www.a.com/b.js
同一域名下 允许
http://www.a.com/lab/a.js 
http://www.a.com/script/b.js
同一域名下不同文件夹 允许
http://www.a.com:8000/a.js 
http://www.a.com/b.js
同一域名,不同端口 不允许
http://www.a.com/a.js 
https://www.a.com/b.js
同一域名,不同协议 不允许
http://www.a.com/a.js 
http://70.32.92.74/b.js
域名和域名对应ip 不允许
http://www.a.com/a.js 
http://script.a.com/b.js
主域相同,子域不同 不允许
http://www.a.com/a.js 
http://a.com/b.js
同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问)
http://www.zuidaima.com/a.js 
http://www.a.com/b.js
不同域名 不允许


由 最代码官方编辑于2016-11-15 9:57:15

猜你喜欢
  • html父页面与子页面iframe相互调用方法详解
  • 纯JS实现网页用户访问次数(无数据库)
  • java访问sqlite数据库
  • java判断请求时手机端访问还是电脑端访问
  • Java web实现统计网站的IP访问次数几种例子
  • python基于nginx访问日志统计客户端ip访问量
  • Netty5.0+HTML制作的网页聊天室
  • jQuery网页验证码插件
  • jQuery泡泡龙网页小游戏
  • H5抽签网页小游戏
  • JavaScript网页设计300例
  • Chriswu网页桌球小游戏

打赏

最代码分享评论总数 10个评论 最代码分享牛币数 6个牛币 iframe标签 网页跨域访问 HTML/HTML5
文件名:跨域.rar,文件大小:586.609K 下载
  • /
      • /跨域
          • /跨域/site1
            • /跨域/site1/.classpath
            • /跨域/site1/.project
              • /跨域/site1/.settings
                • /跨域/site1/.settings/.jsdtscope
                • /跨域/site1/.settings/org.eclipse.jdt.core.prefs
                • /跨域/site1/.settings/org.eclipse.wst.common.component
                • /跨域/site1/.settings/org.eclipse.wst.common.project.facet.core.xml
                • /跨域/site1/.settings/org.eclipse.wst.jsdt.ui.superType.container
                • /跨域/site1/.settings/org.eclipse.wst.jsdt.ui.superType.name
              • /跨域/site1/WebContent
                • /跨域/site1/WebContent/iframe.html
                • /跨域/site1/WebContent/index.html
最代码相关代码源代码列表相关代码
  • html可编辑的表格
  • html实现多种颜色的选取
  • HTML简单好看的多级菜单栏
  • HTML页面跳转的5种方法
  • html信息提示特效代码
  • html开发数字雨特效代码
  • 蓝色简洁进销存管理系统HTML模板
  • Html网页小游戏:猜拳游戏!
  • html实战-制作静态网页
  • 黑色网站制作SEO工作室HTML模板
  • HTML教育培训机构网站模板
  • 蓝色床上用品家具品牌公司HTML模板
最代码最近下载分享源代码列表最近下载
sisihuisi  LV1 2020年9月28日
星星
xshxxm1  LV21 2020年9月5日
太阳 月亮 星星
milkhq  LV1 2020年6月4日
星星
我想变强  LV2 2020年4月20日
星星 星星
zk1259  LV6 2019年7月30日
月亮 星星 星星
wetland2009  LV1 2019年4月22日
星星
zdm2157  LV3 2019年4月17日
星星 星星 星星
嘻嘻~  LV7 2019年4月10日
月亮 星星 星星 星星
林夕0908  LV2 2019年1月16日
星星 星星
我最洋气  LV1 2019年1月12日
星星
最代码最近浏览分享源代码列表最近浏览
lszloz  LV8 2023年5月17日
月亮 月亮
聪明的雨果  LV2 2023年3月6日
星星 星星
月光skr  LV3 2023年3月2日
星星 星星 星星
wiffy1988 2022年6月28日
暂无贡献等级
lcy123ww  LV5 2022年3月2日
月亮 星星
Linux_Life 2022年2月25日
暂无贡献等级
zhuzhenbin 2021年12月27日
暂无贡献等级
gwqgwq456 2021年12月20日
暂无贡献等级
dingzeyuan 2021年11月25日
暂无贡献等级
tjf0303  LV2 2021年11月25日
星星 星星
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友

代做工资流水公司襄阳做工资银行流水宁德打印银行流水账单大连转账银行流水制作保定贷款银行流水价格厦门代做银行流水PS镇江薪资流水单公司遵义代做工资流水南宁代开工资银行流水黄冈银行流水修改代开常德薪资银行流水代做常州打工资代付流水济南企业银行流水开具广州代办房贷银行流水宜春公司流水图片太原贷款流水打印温州银行流水价格吉林银行流水PS报价廊坊做工作收入证明无锡银行流水电子版多少钱兰州转账流水代做潮州入职银行流水代做宜昌离职证明模板吉林自存银行流水代办太原企业银行流水开具肇庆自存流水办理常州代办签证工资流水临沂打印银行流水昆明车贷流水代做济南代办背调银行流水重庆办企业对公流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化