1

我正在尝试在使用带有独立 asio 的 websocket++ 的 C++ 项目与当前在浏览器中运行的 Angular 创建的客户端之间运行一些 websocket 通信。

看来我的握手有问题,即一些 CORS 设置。

在客户端我得到这个: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:3001/socket.io/?EIO=3&transport=polling&t=MV3LZsv. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

同时我在 cpp 侧控制台中得到了这个: [2018-12-18 15:09:39] [error] Handshake ended with HTTP error: 426 [2018-12-18 15:09:39] [fail] WebSocket Connection [::ffff:127.0.0.1]:57762 v0 "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0" /socket.io/?EIO=3&transport=polling&t=MV1ffJg 426 websocketpp:28 Upgrade required

好吧,我在 GitHub 存储库上发现了这个问题: https ://github.com/zaphoyd/websocketpp/issues/679

所以我尝试添加验证处理程序,但它不起作用,它甚至没有被调用,所以Access-Control-Allow-Origin甚至没有添加到请求中。

有任何想法吗?

//编辑:更新客户端错误信息

4

1 回答 1

1

看看https://github.com/andrei-markeev/ddpserver/blob/master/examples/websocketpp.cpp#L44

简而言之,尝试使用 connection_ptr 附加您的“Access-Control-Allow-Origin”。

websocket_server::connection_ptr con = wsServer->get_con_from_hdl(hdl);
con->append_header("access-control-allow-origin", "*");
于 2019-01-26T09:18:06.513 回答