查看完整版本: [-- Qt Webassembly 跨域访问 怎么做? --]

QTCN开发网 -> Qt基础编程 -> Qt Webassembly 跨域访问 怎么做? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

20091001753 2023-02-03 23:54

Qt Webassembly 跨域访问 怎么做?

我用 QNetworkAccessManager 下载 新浪 的数据,提示 Not Found

准确来说,我发现是:我只能访问自己服务器的 http 内容,无法访问外部网站的。

所以要怎么做呢?

fsu0413 2023-02-05 11:16
默认情况下应该就是不行的,需要 新浪 配置CORS (嗯,这是不可能的)
要么你自己的服务器代理下,,,。。。但是服务器开销是问题


https://doc.qt.io/qt-6/wasm.html#networking

20091001753 2023-02-05 23:35
fsu0413:默认情况下应该就是不行的,需要 新浪 配置CORS (嗯,这是不可能的)
要么你自己的服务器代理下,,,。。。但是服务器开销是问题
https://doc.qt.io/qt-6/wasm.html#networking
....... (2023-02-05 11:16) 

我想把自己写的几个小工具编译成 webassembly 版本,但发现压根没法弄。

因为他们启动都需要加载第三方网站的数据,PC端 与 安卓端,都没问题,可 webassembly 端就会受到游览器同源的限制。

同源限制 + 不支持中文输入 + 显示中文要自带字体 = 可用性极低。
这意味着它只适合运用在极少数的特殊场景。

fsu0413 2023-02-06 19:58
20091001753:我想把自己写的几个小工具编译成 webassembly 版本,但发现压根没法弄。
因为他们启动都需要加载第三方网站的数据,PC端 与 安卓端,都没问题,可 webassembly 端就会受到游览器同源的限制。
....... (2023-02-05 23:35) 

第三方网站数据确实不行 除非原站代理否则没办法
主要是WebAssembly端的程序都是在沙盒里,正常的JS都是有限制的。

不支持中文输入可能是 Qt 的问题?
https://bugreports.qt.io/browse/QTBUG-107139

20091001753 2023-02-07 02:24
fsu0413:第三方网站数据确实不行 除非原站代理否则没办法
主要是WebAssembly端的程序都是在沙盒里,正常的JS都是有限制的。
不支持中文输入可能是 Qt 的问题?
....... (2023-02-06 19:58) 

这个帖子说 6.4.0 里,复制粘贴无法支持中文。

我试的是 6.4.2,中文是可以粘贴进去的,但无法通过输入法写进去。

yeguoxiong 2023-02-07 22:41
fsu0413:第三方网站数据确实不行 除非原站代理否则没办法
主要是WebAssembly端的程序都是在沙盒里,正常的JS都是有限制的。
不支持中文输入可能是 Qt 的问题?
....... (2023-02-06 19:58)

Qt for WebAssembly无法使用浏览器或者说客户宿主机的字体,可以根据静态编译整个中文字体都打包到资源文件里,就是太大了基本都10mb+,加载速度也会被大幅度拖慢。可以对字体进行裁剪,裁剪常用字体即可,可以控制在几百k大小。在线地址 https://font-subset.disidu.com/

yeguoxiong 2023-02-18 23:22
在服务器端加入头
response.setHeader("Access-Control-Allow-Origin", "*");    
response.setHeader("Access-Control-Allow-Methods", "POST,GET");    
response.setHeader("Access-Control-Allow-Headers", "*");    
response.setHeader("Access-Control-Allow-Credentials", "true");


fsu0413 2023-02-19 11:11
yeguoxiong:在服务器端加入头
response.setHeader("Access-Control-Allow-Origin", "*");    
response.setHeader("Access-Control-Allow-Methods", "POST,GET");    
response.setHeader("Access-Con .. (2023-02-18 23:22) 

如果服务器不是他能控制的呢,比如这里的新浪

yeguoxiong 2023-02-20 13:13
fsu0413:如果服务器不是他能控制的呢,比如这里的新浪 (2023-02-19 11:11) 

可以搜索 nginx跨域解决方案 试一下。

yeguoxiong 2023-03-03 09:12
yeguoxiong:在服务器端加入头
response.setHeader("Access-Control-Allow-Origin", "*");    
response.setHeader("Access-Control-Allow-Methods", "POST,GET");    
response.setHeader("Access-Con .. (2023-02-18 23:22) 

亲测有效。


查看完整版本: [-- Qt Webassembly 跨域访问 怎么做? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled