Closed pan90 closed 6 months ago
是你自己代码的问题。请保证皮肤站第一次初始化时给出的账号刷新接口 URL 与你希望的一致 如有问题,请自行脱敏后上传 hmcl.json 供进一步分析
我大概是明白了,hmcl似乎没支持HTTP重定向
一个斜线的区别
看不出两个请求的 URL 有任何差别
/api/yggdrasil 和 /api/yggdrasil/ 显然不一样
请求 /api/yggdrasil/ 服务端发了重定向响应,让重定向到 /api/yggdrasil 而HMCL并没有处理这个重定向,直接进行json解析
而且在hmcl保存yggdrail地址的时候,末尾都加了反斜线/
那这就是你的问题了。理论上来说,末尾有无 / 完全取决于底层的实现。你这种行为是非常危险的
HMCL 会在遇到 /api/yggdrasil
后将它补全为 /api/yggdrasil/
,根据 Yggdrasil 服务端规范,此 API 也应该以 /
结尾。
HMCL 在这里确实可以做的稳健,但这里也建议你的服务端应当从 /api/yggdrasil
重定向至 /api/yggdrasil/
或者同时响应两者。
平台 | Platform
Windows 10 10.0.19045.3693
问题描述 | Problem Description
我正在基于Next.js实现yggdrail外置登录,但是在刷新账号时出现了一些问题,下图是显示内容
经测试,像littleskin皮肤站能正常刷新,而自己实现的却不行。
相关错误日志
这貌似是JSON解析错误,我根据异常信息查看了HMCL的相关代码 文件:https://github.com/HMCL-dev/HMCL/blob/main/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorServer.java
似乎HMCL请求到了错误的yggdrail元信息,传入setMetadataResponse的解析文本居然是:“/api/yggdrasil” 并且,我从yggdrail服务器后台日志看出,hmcl并没有请求/api/yggdrasil 我使用API测试工具进行测试,返回的meta如下:
因为使用blessing skin的皮肤站不会这样,我不清楚是我自己的问题还是hmcl的问题 另外:使用PCL2启动器可正常刷新,并不会出现“账户刷新失败”的问题
启动器崩溃报告 / 启动器日志文件 | Launcher Crash Report / Launcher Log File