背景
个人 bot 更新依赖做 webhook 迁移变更时原有接口出现鉴权问题
2025-01-26T14:58:50.846+0800 INFO v1/openapi.go:113 [OPENAPI]POST https://sandbox.api.sgroup.qq.com/v2/groups/xxx/messages, traceID:xxx, status:401 Unauthorized, elapsed:45.28308ms req: {"content":"xxx","msg_id":"ROBOT1.0_ixx-","msg_seq":123}, resp: {"message":"请求头Authorization参数格式错误","code":11241,"err_code":40011005,"trace_id":"xxx"}
2025-01-26T14:58:50.846+0800 ERROR handler/handler.go:19 handle payload error {"error": "code:401, text:{\"message\":\"请求头Authorization参数格式错误\",\"code\":11241,\"err_code\":40011005,\"trace_id\":\"xxx\"}, traceID:xxx"}
复现
基于当前所依赖版本 resty-go: github.com/go-resty/resty/v2 v2.16.5
func TestRestySetAuthSchema(t *testing.T) {
client := resty.New().
SetDebug(true).
OnBeforeRequest(
func(c *resty.Client, _ *resty.Request) error {
c.SetAuthScheme("QQBot")
c.SetAuthToken("KLadnbiraenibi2uc3rh9pwng")
return nil
},
)
client.R().Post("localhost:9090")
}
Output:
=== RUN TestRestySetAuthSchema
2025/01/26 16:13:29.440023 DEBUG RESTY
==============================================================================
~~~ REQUEST ~~~
POST 9090 HTTP/1.1
HOST :
HEADERS:
Authorization: Bearer KLadnbiraenibi2uc3rh9pwng
User-Agent: go-resty/2.16.5 (https://github.com/go-resty/resty)
BODY :
***** NO CONTENT *****
------------------------------------------------------------------------------
~~~ RESPONSE ~~~
STATUS :
PROTO :
RECEIVED AT : 2025-01-26T16:13:29.3983287+08:00
TIME DURATION: 540µs
HEADERS :
BODY :
***** NO CONTENT *****
==============================================================================
可能的修复方法:
func TestRestySetAuthSchema(t *testing.T) {
client := resty.New().
SetDebug(true).
OnBeforeRequest(
func(c *resty.Client, r *resty.Request) error {
- c.SetAuthScheme("QQBot")
+ r.SetAuthScheme("QQBot")
c.SetAuthToken("KLadnbiraenibi2uc3rh9pwng")
return nil
},
)
client.R().Post("localhost:9090")
}
Output:
2025/01/26 16:17:35.746922 DEBUG RESTY
==============================================================================
~~~ REQUEST ~~~
POST 9090 HTTP/1.1
HOST :
HEADERS:
Authorization: QQBot KLadnbiraenibi2uc3rh9pwng
User-Agent: go-resty/2.16.5 (https://github.com/go-resty/resty)
BODY :
***** NO CONTENT *****
------------------------------------------------------------------------------
~~~ RESPONSE ~~~
STATUS :
PROTO :
RECEIVED AT : 2025-01-26T16:17:35.6975277+08:00
TIME DURATION: 0s
HEADERS :
BODY :
***** NO CONTENT *****
==============================================================================
上游 issue
go-resty/resty#965
背景
个人 bot 更新依赖做 webhook 迁移变更时原有接口出现鉴权问题
复现
基于当前所依赖版本 resty-go:
github.com/go-resty/resty/v2 v2.16.5Output:
=== RUN TestRestySetAuthSchema 2025/01/26 16:13:29.440023 DEBUG RESTY ============================================================================== ~~~ REQUEST ~~~ POST 9090 HTTP/1.1 HOST : HEADERS: Authorization: Bearer KLadnbiraenibi2uc3rh9pwng User-Agent: go-resty/2.16.5 (https://github.com/go-resty/resty) BODY : ***** NO CONTENT ***** ------------------------------------------------------------------------------ ~~~ RESPONSE ~~~ STATUS : PROTO : RECEIVED AT : 2025-01-26T16:13:29.3983287+08:00 TIME DURATION: 540µs HEADERS : BODY : ***** NO CONTENT ***** ==============================================================================可能的修复方法:
func TestRestySetAuthSchema(t *testing.T) { client := resty.New(). SetDebug(true). OnBeforeRequest( func(c *resty.Client, r *resty.Request) error { - c.SetAuthScheme("QQBot") + r.SetAuthScheme("QQBot") c.SetAuthToken("KLadnbiraenibi2uc3rh9pwng") return nil }, ) client.R().Post("localhost:9090") }Output:
2025/01/26 16:17:35.746922 DEBUG RESTY ============================================================================== ~~~ REQUEST ~~~ POST 9090 HTTP/1.1 HOST : HEADERS: Authorization: QQBot KLadnbiraenibi2uc3rh9pwng User-Agent: go-resty/2.16.5 (https://github.com/go-resty/resty) BODY : ***** NO CONTENT ***** ------------------------------------------------------------------------------ ~~~ RESPONSE ~~~ STATUS : PROTO : RECEIVED AT : 2025-01-26T16:17:35.6975277+08:00 TIME DURATION: 0s HEADERS : BODY : ***** NO CONTENT ***** ==============================================================================上游 issue
go-resty/resty#965