javascript websocket 是不是加密任何正在发送的数据?
Posted
技术标签:
【中文标题】javascript websocket 是不是加密任何正在发送的数据?【英文标题】:Does a javascript websocket encrypt any data being sent?javascript websocket 是否加密任何正在发送的数据? 【发布时间】:2020-09-22 15:56:24 【问题描述】:所以我试图在 javascript 文件中设置客户端 websocket,与用 C# 编写的服务器通信。
客户:
var socket = new WebSocket("ws://localhost:11000");
function barf()
socket.send('asdf');
socket.onmessage = function(e)
console.log(e.data);
;
服务器:
IPHostEntry ipHostInfo = Dns.GetHostEntry("localhost");
IPAddress ipAddress = ipHostInfo.AddressList[1];
TcpListener listener = new TcpListener(ipAddress, 11000);
try
listener.Start();
TcpClient client = listener.AcceptTcpClient();
message = client.GetStream();
int i = message.Read(bytes);
string data = Encoding.ASCII.GetString(bytes, 0, i);
string key = new System.Text.RegularExpressions.Regex("Sec-WebSocket-Key: (.*)").Match(data).Groups[1].Value.Trim();
Byte[] response = GetHandshakeResponse(key);
message.Write(response, 0, response.Length);
bytes = new Byte[1024];
i = message.Read(bytes);
Console.WriteLine(Encoding.ASCII.GetString(bytes));
问题是,当我在我的 Javascript 文件中调用函数“barf”时,服务器每次都会吐出不同的消息,就好像它正在被加密一样。我尝试过使用不同的编码,但我似乎无法在服务器上得到完全正确的“asdf”。有没有人有任何见解?谢谢!
【问题讨论】:
你试过用 UTF-8 代替 ASCII 吗? 我确实尝试过使用 UTF-8。响应仍然是胡言乱语。 Web 套接字通信不仅仅是将其链接到原始套接字并从中读取数据 乱码是因为你正在发送一个TCP消息,此时WebSocket连接没有建立。您应该阅读一些关于如何在 C# 中使用 HTTP 切换协议实现 WebSocket 服务器的教程WebSocket.send(string)
sends USVString
data as UTF-8.
【参考方案1】:
如果您想通过网络套接字加密通信,请使用 wss 协议而不是 ws。
另外,我认为您的测试没有意义,因为您没有在后端使用服务器套接字服务器运行它。
Creating a "Hello World" WebSocket example
【讨论】:
以上是关于javascript websocket 是不是加密任何正在发送的数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何连接到它反应的 websocket 而不是普通的 javascript?
使用 websocket javascript 客户端发送文件
websocket 升级是不是仍然允许 http ajax 请求?