使用浏览器连接websocket服务器时一切正常,但是使用nodejs ws模块连接时一直报Unexpected response code: 403错误,查了很多帖子都没说明白,最后自己试着一点一点对比模拟浏览器请求头,最终解决问题,解决后代码如下:
//TODO 不加这个,会报403错误 const options = { headers: { 'Origin': 'http://localhost' } }; let client = new ws(self.url,options); client.on("open", function () { logger.debug("connect success !!!!"); }); client.on("error", function(error) { //错误出现之后关闭连接 logger.error('connect error:'+error.message); }); client.on("close", function() { logger.error('与后端服务器断开连接!'); }); client.on("message", function(data) { logger.debug('接受到消息!'); });
其实,修改服务器端逻辑也可以处理403错误问题,原因就是服务器端拿不到origin,无法保证请求的安全性,所以禁止连接
标签:function,Unexpected,websocket,nodejs,client,403,error,ws,logger From: https://www.cnblogs.com/angryprogrammer/p/18280348