使用nodejs ws模組連線websocket伺服器Unexpected response code: 403錯誤解決

愤怒的码农發表於2024-07-02

使用瀏覽器連線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,無法保證請求的安全性,所以禁止連線

相關文章