hoppscotch连接需鉴权的websocket服务时,应优先采用url参数传token(如wss://...?token=xxx),其次可选sec-websocket-protocol头、同源cookie、代理注入header或子协议+消息级二次鉴权。

如果您在Hoppscotch中尝试连接需身份验证的WebSocket服务,但连接被拒绝或握手失败,则很可能是鉴权信息未正确传递或服务器端校验未通过。以下是多种兼容主流鉴权机制的连接方法:
一、通过URL参数传递Token
该方法适用于JWT或简单Token嵌入URL的场景,利用WebSocket握手请求中可携带查询参数的特性,将认证凭据附加在endpoint末尾。Hoppscotch原生支持完整URL输入,无需额外插件。
1、在Hoppscotch实时通信模块中选择“WebSocket”协议。
2、于地址栏输入形如 wss://your-api.com/ws?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... 的完整端点URL。
3、点击“Connect”发起连接,确保服务器端逻辑在upgrade前解析并校验req.URL.Query().Get("token")。
二、使用Sec-WebSocket-Protocol头注入认证标识
该方式复用WebSocket标准头部字段Sec-WebSocket-Protocol,将其作为轻量级认证载体,适用于服务端已约定将此头用于Token或角色标识的系统。
1、进入Hoppscotch WebSocket配置界面,展开“Advanced Options”(高级选项)。
2、点击“Add Protocol”按钮。
3、在协议名称栏输入 auth-jwt-v1 或其他服务端识别的协议标识(如 Bearer eyJhbGciOi...)。
4、勾选“Active”,确认后建立连接。
三、启用Cookie自动携带(同源前提)
当Hoppscotch运行在与目标WebSocket服务同源的HTTPS页面中,且浏览器已存在有效会话Cookie时,握手请求将自动附带Cookie头。此方式依赖浏览器原生行为,无需手动设置。
1、确保当前访问Hoppscotch的页面协议为HTTPS,且域名与WebSocket服务端域名一致(例如均为https://api.example.com)。
2、提前在浏览器中登录对应系统,使session_id或auth_token Cookie处于有效状态并满足Secure与SameSite=Lax/None策略。
3、在Hoppscotch中输入wss://api.example.com/ws并连接,服务端可通过req.Header.Get("Cookie")提取并校验。
四、配合代理服务注入自定义Header
Hoppscotch浏览器版不支持直接添加任意HTTP头(如Authorization),但可通过本地反向代理中转,在握手请求发出前注入认证头。此方案绕过浏览器限制,适配需Authorization: Bearer的标准校验流程。
1、启动本地代理服务(如Nginx或Node.js http-proxy-middleware),配置其将/ws-proxy路径转发至目标wss://地址,并在转发请求头中添加 Authorization: Bearer eyJhbGciOi...。
2、在Hoppscotch中连接代理地址,例如 wss://localhost:8080/ws-proxy。
3、代理服务收到Upgrade请求后,补全认证头并透传至真实后端,完成鉴权链路。
五、使用WebSocket子协议+消息级二次鉴权
该方法将连接建立与权限确认分离:先建立无鉴权的WebSocket连接,再立即发送认证消息;服务端收到后验证,成功则激活会话,失败则关闭连接。适用于Hoppscotch无法前置注入凭证但允许首条消息自定义的场景。
1、在Hoppscotch中以任意合法端点(如wss://echo.websocket.events)建立连接。
2、连接成功后,在消息输入框中输入JSON格式认证载荷:{"type":"auth","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}。
3、点击“Send”,观察日志区域是否返回{"status":"authorized"}或类似成功响应。











