让 QtWebkit 支持跨域CROS - nowboy的CSDN博客 - 博客频道 - CSDN.NET
让 QtWebkit 支持跨域CROS - nowboy的CSDN博客 - 博客频道 - CSDN.NET
让 QtWebkit 支持跨域CROS
2013-05-23 22:05 450人阅读 评论(5) 收藏 举报qtwebkit cross origi最近公司的一个项目中,使用了QtWebkit来创建windows本地应用程序。
大致说明:
1》最外面的框架是一个QWebView加载一个index.html;
2》index.html内嵌若干个iframe,iframe的src有本地的html文件,也有网络上的html文件;
3》也就是说,整个软件的界面基本上都是用html/css/javascript来编写的;
4》在该项目中,使用了QtWebkit为index.html拓展了几个javascript方法(用C++拓展javascript的本地功能);
5》问题出现了:>>>跨域问题(CROS)
在QWebInspector中调试页面时,
1.当index.html中的javascript函数去调用网络上的页面的方法或操作网络上的页面的DOM,或者网络上的页面中的javascript方法去调用index.html中那些QtWebkit拓展的方法时,javascirpt控制台出现了红色的错误提示:
Unsafe JavaScript attempt to access frame with URL "http://some/iframe.html" from frame with URL "file/to/path/index.html"
2.当在本地index.html中用AJAX请求远程API的JSON数据时,控制台输出:
XMLHttpRequest cannot loadhttp://some/api?id=412311. Origin null is not allowed by Access-Control-Allow-Origin.
跨域问题CROS;
问题2的解决方法:
QWebView::settings()->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, true);
OK!
注意:上面那行代码仅解决了本地的html文件跨域请求web上的数据,并不能解决web上的页面跨域请求另一个域上web数据,当然也有解决方法,那就是在api服务器的页面上加header:<?php header("Access-Control-Allow-Origin: *"); ?>,或者配置api服务器使其全局支持跨域操作。问题1很棘手,问题1的解决方法:
谷歌、qt-project.org、百度,最后在谷歌搜索结果中得到答案:
https://bugs.webkit.org/attachment.cgi?id=65204&action=prettypatch
原因:
https://lists.webkit.org/pipermail/webkit-qt/2010-September/000828.html
这样一来,所有的跨域、unsafe javascript... 啥的问题都不在话下了。
另:
启动Chrome时加上--disable-web-security参数可以支持跨域,示例:
cmd>chrome.exe --disable-web-security,这样做只是为了方便调试界面。
让 QtWebkit 支持跨域CROS - nowboy的CSDN博客 - 博客频道 - CSDN.NET相关推荐
- springboot+Vue项目使用axios实现跨域(CROS)
springboot+Vue项目使用axios实现(CROS)跨域 一.项目背景 二.跨域资源共享 CORS 详解 三.axios跨域实现 3.1 安装qs模块 3.2 axios使用 四.sprin ...
- java 跨域_springboot解决跨域CROS问题,用注解@CrossOrigin
项目是springboot框架,前后端分离,需要跨域,当前前端可以用JSONP解决,但是java端如何解决呢? 因为是springboot框架,所以好多都可以用注解解决问题,所以就用到了@CrossO ...
- 用 nginx 代理 MailChimp API 并支持跨域
tl;dr nginx 既灵活方便,又功能丰富,可以帮助我们实现添加跨域头.URL 重写以及隐藏敏感信息等功能.本文介绍在使用 MailChimp 进行邮件营销中遇到的一个普遍问题,分析了浏览器发起跨 ...
- Nginx配置服务器静态文件支持跨域访问
2019独角兽企业重金招聘Python工程师标准>>> 在server中配置 add_header Access-Control-Allow-Origin *;add_header ...
- 同源策略_如何支持跨域
欢迎大家阅读<朝夕Net社区技术专刊> 我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦! 01 PART ...
- 两种可以支持跨域的方式 - 讲解篇
针对项目:vue.js + Express 本例的vue.js项目使用Express框架作为后台数据服务端 什么叫做跨域? 通常情况下是指两个不在同一域名下的页面无法进行正常通行,或者无法获取其他域名 ...
- SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求
SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求 现代浏览器处于安全的考虑,在http/https请求时必须遵守同源策略,否则即使跨域的http/https 请求, ...
- 如何判定API接口是否支持跨域访问
1.背景 同一个h5页面需要访问多个不同的域名下的地址 2.判定方式 方式一 在浏览器控制台执行如下代码: var xhr = new XMLHttpRequest(); xhr.open('GET' ...
- js图片下载(支持跨域/解决Access-Control-Allow-Origin)
一.思路 使用canvas绘制图片 使用toBlob方法将canvas图片转换为文件 使用a标签的download属性下载这个canvas转化生成的图片文件 canvas.toBlob() 将canv ...
最新文章
- windows共享使用linux生成的密钥
- 软件测试用例文档模板 简书,如何写出高质量的测试用例
- 【数据结构】量子危机
- 设计模式适配器模式_21世纪的设计模式:适配器模式
- Android之back键拦截处理
- ThinkPHP---RBAC
- SQL server 2005的复制(四)
- android sdk httppost,android6.0SDK 删除HttpClient的相关类的解决方法
- 线性回归和逻辑回归的区别_Spark实现线性回归与逻辑回归算法
- 用R和BioConductor进行基因芯片数据分析(三):计算median
- requests-get请求
- 计算机应用基础教材提纲,《计算机应用基础》课程教学大纲
- 有限域f9的特征是多少_密码学数学基本第十一讲有限域.ppt
- 51单片机之逻辑运算指令ANL、ORL、XRL等
- php 问卷调查,使用php问卷调查结果统计
- golang对比python
- 树莓派3B 安装 Raspbian 系统,配置环境
- MySQL性能优化的最佳20+条经验
- c++实现经典游戏——贪吃蛇
- 人生25句最美丽的名句