QWebSocket支持ssl

一、QWebSocket支持网页测试websocket

测试网站: http://coolaf.com/tool/chattest

测试url:ws://82.157.123.54:9010/ajaxchattest

测试结果:连接失败服务器断开连接

原因:通过抓包对比发现少了“Origin”字段

QNetworkRequest request;
request.setUrl(QUrl(url));
request.setRawHeader("Origin", "http://baidu.com"); // 这个网站可以替换..
m_pWebSocket->open(request);

二、QWebSocket支持ssl

1、根据自定义版本下载或编译openssl(qt5.9.7)

2、把dll拷入运行目录

3、设置加密形式

QSslConfiguration conf = m_pWebSocket->sslConfiguration();
conf.setPeerVerifyMode(QSslSocket::VerifyNone);
conf.setProtocol(QSsl::TlsV1SslV3);
m_pWebSocket->setSslConfiguration(conf);

QWebSocket是一个Qt库中的功能强大的WebSocket API,用于在Qt应用程序中实现WebSocket通信。要在QWebSocket上启用SSL验证,你需要做以下几个步骤: 1. **创建QSslContext**: 首先,你需要创建一个QSslContext对象,表示将要用于连接的SSL上下文。你可以通过`QSsl::createDefaultContext()`获取默认配置,也可以自定义配置添加证书链和CA证书文件。 ```cpp QSslContext sslContext; if (!sslContext.setOptions(QSsl::VerifyCertificateChain | QSsl::VerifyDepthLimited)) { qWarning() << "Failed to set SSL options"; } ``` 2. **加载根证书**: 如果你的服务器使用的是自签名证书,或者你想验证对方的身份,就需要提供可信的根证书。这通常涉及到设置信任的证书目录或单个证书文件到`QSslSocket::setCaCertificates()`方法中。 ```cpp QSslCertificate caCert = ...; // 加载你的根证书 sslContext.addRoot(caCert); ``` 3. **设置主机名验证**: 使用`QSslSocket::setHostNameValidationPolicy()`来指定是否只接受特定主机的证书,防止中间人攻击(MITM)。 ```cpp sslContext.setHostNamePolicy(QSslSocket::HostNameMatch); ``` 4. **应用到WebSocket实例**: 创建QWebSocket实例时,传入设置好的QSslContext。 ```cpp QWebSocket socket("wss://your.server.com", sslContext); socket.open(); ``` 5. **错误处理**: 最后,你需要监听并处理可能发生的SSL验证错误,如`QSslError::InvalidCertificate`等。 ```cpp QEventLoop loop; socket.connectToHost(&loop); while (true) { if (socket.error()) { QSError::ErrorType error = socket.error(); if (error == QSslError::NoError) break; // 连接成功 qCritical() << "SSL Error: " << error.description(); } QEvent event; loop.processEvents(QEventLoop::WaitForMoreEvents, 1000); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值