允许CEF跨域访问iframe
默认情况下,如果嵌入本地Web页面,并在页面内部使用iframe来显示一个在线页面,加载的过程中会触发一个未捕获异常,虚函数CefV8ContextHandler::OnUncaughtException被调用,如果搞个控制台窗口来输出异常消息,或者将消息打印到日志中,会是这样:
Unsafe JavaScript attempt to access frame with URL file:///F:/Workspace/Project/WebUI_V1.0.0/WebUI/main.html from frame with URL http://112.4.xx.xx/js_app_choice/index/fac/1/uid/307839. The frame requesting access has a protocol of 'http', the frame being accessed has a protocol of 'file'. Protocols must match.
虽然此时,在线页面嵌入成功并显示出来了,但是,无法happy的实现父子页面的跨域访问,父页面想要调子页面的JavaScript方法,没门,子页面调父页面,没门,限制重重。根据异常消息,子页面访问的父页面的URL必须为http协议,而非file协议。正常情况下,只要把父页面传到服务器上就可以解决协议问题。但是,我们是用CEF来做桌面程序界面,哪来的服务器,别猴急,看看Chrome浏览器上是怎么玩的:
给chrome启动加个参数 --disable-web-security
方法1
- 在命令行运行 "C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security
方法2
- 在桌面复制一个chrome的快捷方式,重命名为“Chrome跨域”,右键“属性”,在“目标”后面加上 --disable-web-security,即目标改为上面的"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security,以后点击上面的“Chrome跨域”启动浏览器,就可以跨域访问了
注意:启动chrome的时候一定要关闭开着的所有chrome程序,然后再启动才能生效
上文来源:http://blog.bccn.net/%E9%9D%99%E5%A4%9C%E6%80%9D/13411
既然我们用CEF,那么跟Chrome也是一般无二了,只要找到类似的设置就可以。找呀找,在CefBrowserSettings也就是_cef_browser_settings_t结构体中,有个成员变量web_security_disabled,正是此货,来看下它的注释:
///
// Set to true (1) to allow risky security behavior such as cross-site
// scripting (XSS). Use with extreme care.
///
确实,将其赋值为true,即可运行跨域访问。
重新启动程序,显示iframe中的在线页面,为输出原来的异常消息。
再在代码里跨域访问看看:
var $iframe = $("#iframe-apps");
$iframe.get(0).contentWindow.showAppList(param);
嘿嘿,果然可用。
下面是一些帖子,供各位参考下载JavaScript中实现iframe跨域访问的方法:
《获取iframe窗口的 contentWindow 不兼容Chrome ?》
http://bbs.csdn.net/topics/360064743
《iframe子父页面调用》
http://blog.csdn.net/w_basketboy24/article/details/8889085
《jquery 父窗口 子窗口 相关操作》
http://www.cnblogs.com/zhouchaoyi/archive/2010/09/16/1827973.html
允许CEF跨域访问iframe的更多相关文章
- CEF 跨域访问iframe
转载:https://www.cnblogs.com/wxxweb/p/3738696.html 在CefBrowserSettings也就是_cef_browser_settings_t结构体中,有 ...
- IFrame跨域访问&&IFrame跨域访问自定义高度
1.IFrame跨域访问: http://blog.csdn.net/fdipzone/article/details/17619673 2.IFrame跨域访问自定义高度: 由于JS禁止跨域访问,如 ...
- iframe跨域访问
js跨域是个讨论很多的话题.iframe跨域访问也被研究的很透了. 一般分两种情况: 一. 是同主域下面,不同子域之间的跨域: 同主域,不同子域跨域,设置相同的document.domian就可以解决 ...
- CP="CAO PSA OUR" 用P3P header解决iframe跨域访问cookie
1.IE浏览器iframe跨域丢失Session问题 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的因此,网上 ...
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...
- js iframe跨域访问
1.什么是跨域? 2.前台解决跨域几种方法 2.1 动态创建script 2.2 使用document.domain 2.3使用HTML5新属性postMessage 2.4 利用iframe和loc ...
- IFrame跨域访问自定义高度
由于JS禁止跨域访问,如何实现不同域的子页面将高度返回给父页面本身,是解决自定义高度的难点. JS跨域访问问题描述:应用A访问应用B的资源,由于A,B应用分别部署在不同应用服务器(tomcat)上,属 ...
- cookie 跨域访问的解决方案
Cookie 同域单点登录 最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录. ...
- 浅析JSONP-解决Ajax跨域访问问题
浅析JSONP-解决Ajax跨域访问问题 很久没有写随笔了,总是感觉没时间,其实时间就是...废话少说,前几天,工作上有一新需求,需要前端web页面异步调用后台的Webservice方法返回信息.实现 ...
随机推荐
- 用word-break: break-all解决不正确换行问题
这个在新闻频道存在已久的问题,今天终于把它给解决了! 问题是这样的,当一段文字中有比较长的链接地址,会造成链接地址之前的文字不能正确换行,效果如下: 对应的html代码如下: <p> 如图 ...
- .NET Core是什么?
[初步理解] .NET Core 是一个开源的.跨平台的 .NET 实现.而 .NET Framework 是基于 Windows 的 .NET 实现,Mono 是 .NET Framework 的一 ...
- Nutz Dao实体中索引注解的使用(@TableIndexes@Index)
Nutz是一组轻便小型的框架的集合, 各个部分可以被独立使用,把SSH的精华封装在一个1M左右的jar包中,Nutz不对其他任何第三方库产生依赖,如果不考虑数据库链接和日志的话,创建完美的Web应用只 ...
- 通用对象池ObjectPool的一种简易设计和实现方案
对象池,最简单直接的作用当然是通过池来减少创建和销毁对象次数,实现对象的缓存和复用.我们熟知的线程池.数据库连接池.TCP连接池等等都是非常典型的对象池. 一个基本的简易对象池的主要功能实现我认为应该 ...
- Msbuild利用cpu多核加速
msbuild /t:Rebuild /p:Configuration=Release /m /m 自动检测cpu数量启动对应数量进程
- ios 设置状态栏文本颜色为白色
1,在.plist文件中添加一个键值对:设置View controller-based status bar appearance的值为NO 2,在方法中 - (BOOL)application:(U ...
- O2O已死?不!美团点评们迎来新风口
当年的千团大战,巅峰时期曾涌入了5000多家团购网站,刘旷本人也参与了此次团购大战.而就在当时很多人都唱衰团购的时候,美团和大众点评却最终脱颖而出,市值一路飙升,人人网旗下的糯米网因为卖给了百度,也得 ...
- JS深入了解闭包
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作 ...
- 分享45个设计师应该见到的新鲜的Web移动设备用户界面PSD套件
对于一个网页设计师来说做一个好的PSD模板是非常有挑战性的一项任务,虽然PSD的模板简化了设计任务,但找出高质量的PSD文件,可以自由使用,是一 项艰巨的任务.你必须通过许多网页去找出一个极少数的PS ...
- 软件设计之UML—UML的构成[上]
UML是一种通用的建模语言,其表达能力相当的强,不仅可以用于软件系统的建模,而且可用于业务建模以及其它非软件系统建模.UML综合了各种面向对象方法与表示法的优点,至提出之日起就受到了广泛的重视并得 ...