第一次使用 libnghttp2-asio 库,尽管它已被弃用。
我正在试验我认为如何提供 reddit 网页,如下所示:
boost::system::error_code ec;
namespace net = nghttp2::asio_http2;
namespace ssl = boost::asio::ssl;
using boost::asio::ip::tcp;
boost::asio::io_context ioc;
ssl::context tls(ssl::context::tlsv12_client);
tls.set_options(ssl::context::default_workarounds);
// tls.set_verify_mode(boost::asio::ssl::verify_peer);
tls.set_verify_mode(ssl::verify_none);
tls.set_default_verify_paths();
net::client::session session(ioc, tls, "www.reddit.com", "443");
session.on_connect([&session](tcp::resolver::iterator endpoint_it) {
std::cout << "Connected" << std::endl;
});
session.on_error([](const boost::system::error_code &ec) {
std::cout << "error: " << ec.message() << std::endl;
});
ioc.run();
输出:
error: tls: no application protocol negotiated
我想知道如何才能成功连接,也许我错过了握手过程?如果是这样,我该怎么办?
最佳答案
nghttp2 默认不执行 ALPN。 解决办法
SSL_CTX_set_alpn_protos(tls.native_handle(), (const unsigned char *)"\x02h2", 3);
关于c++ - TLS : no application protocol negotiated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76780341/