使用nodejs ws模块连接websocket服务器Unexpected response code: 403错误解决

使用浏览器连接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,无法保证请求的安全性,所以禁止连接

posted @ 2024-07-02 18:14  愤怒的码农  阅读(27)  评论(0编辑  收藏  举报