关于UniURLFrame无法正常显示网站页面内容问题的解决

一、 问题描述

根据介绍,UniGUI中的控件TUniURLFrame可以方便的实现对于网站页面内容的调用嵌入,笔者在实践的过程中发现,其实并不是简单,程序编译运行(在google Chrome浏览器中进行测试,浏览器版本为:92.0.4515.131)之后,始终在控件UniURLFrame中无法正常浏览到网站(www.sohu.com),显示信息见下图。image.png

google chrome浏览器中,点击右键弹出菜单“检查”,其中指出了如下问题:

Refused to display 'https://www.sohu.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.

X-Frame-Options HTTP响应头是用来确认是否浏览器可以在frame或iframe标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中,以来避免点击劫持。

可见,导致在UniURLFrame控件中无法正常浏览网站的根本原因,或许与控件TUniURLFrame本身没有关系。如何解决这一问题,使得指定网站的页面可以显示在控件UniURLFrame中?

二、 解决方法

(一)使用UniSession->AddJS方法

代码如下:

UniURLFrame1->UniSession->AddJS( "window.open('http://www.sohu.com','_blank')" ) ;

运行程序之后,确实链接到网站https://www.sohu.com,但是只是在当前测试应用程序的浏览器中新建窗口链接到网站https://www.sohu.com,显然未能到达使用控件UniURLFrame1想要达到的效果(网站页面嵌入到应用程序之中)。

(二)终极方法

既然导致应用程序中的控件UniURLFrame中无法正常浏览到网站(www.sohu.com)的原因是想要访问的网站实施了X-Frame-OptionsOptions设置为SAMEORIGIN,同域名方可嵌入)策略,问题的彻底解决还需要回到这个根本方向上。

对于google Chrome浏览器(本人浏览器版本为:92.0.4515.131),可以通过网站(https://www.crx4chrome.com)搜索下载Ignore X-Frame headers扩展程序,下载完成文件后,然后打开google Chrome浏览器,在Chrome浏览器扩展页面 (通过在地址栏输入chrome://extensions/ 或通过Chrome浏览器右上方“”图标菜单找到 更多工具->扩展程序 子菜单), 然后拖放文件之前下载的crx文件gleekbfjekiniecknbkamfmkohkpodhe-1.1.2-Crx4Chrome.com.crx)Chromer扩展页面就可以安装了。如果出现crx文件头损坏不能安装的错误,请打开Chrome浏览器扩展页面的开发者模式,就可以安装了。安装之后,再次运行程序,即可完美解决本文中的问题。

image.png


上一篇: 没有了
下一篇: 没有了