We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
目前,用户配置 authlib-injector 时,需要输入完整的 Yggdrasil API 地址,这是十分麻烦的。尽管通过 DnD 方式添加 Yggdrasil 服务端可以避免输入 API 地址,但此功能的使用率并不高。
此提案规定了一个 HTTP 响应头字段 X-Authlib-Injector-API-Location,其被称为 API 地址指示(API Location Indication,简称 ALI)。ALI 的值可以是相对 URL(如 /api/yggdrasil/),也可以是绝对 URL(如 https://skin.example.com/api/yggdrasil/),它指向与当前页面相关联的 Yggdrasil API 地址。
X-Authlib-Injector-API-Location
/api/yggdrasil/
https://skin.example.com/api/yggdrasil/
当用户添加某个 URL 为 Yggdrasil 服务器时,启动器向此 URL 发送 GET 请求。不论 HTTP 状态码是多少,如果响应中包含 ALI,则启动器重定向到其所指的 URL。这样的重定向允许进行多次,但必须有次数上限。在这里规定这个上限为 5 次。
如果 ALI 指向其自身(比较时除去末尾/),则该 ALI 应当被忽略,当前 URL 即为 API 地址。
/
需要注意的是,ALI 仅用于确定 Yggdrasil API 地址,即仅在添加 Yggdrasil 服务器时被考虑。一旦 Yggdrasil 服务器被添加,其 API 地址就不再发生改变,无论服务器的后续响应中是否包含 ALI。此外,启动器应当显示真正的 API 地址,而不是重定向之前的。
当 authlib-injector 运行在 MC 服务端上时,其支持 ALI,实现方式与启动器相同;当 authlib-injector 运行在 MC 客户端上时,其不支持 ALI(这里认为启动器已经处理过 ALI,传入的 API 地址即为真正的 API 地址)。
判断运行环境是客户端还是服务端的方法,见 #16。
如果 #16 、 #17 及本提案可以被实现,那么就会有以下效果:
假定 https://example.com/ 是一个皮肤站,其 Yggdrasil API 地址为 https://skin.example.com/api/yggdrasil。页面 https://example.com/ 使用了 ALI。
https://example.com/
https://skin.example.com/api/yggdrasil
example.com
-javaagent:authlib-injector.jar=example.com
The text was updated successfully, but these errors were encountered:
Support ALI(Api Location Indication) (#18)
36f3ef6
Merge pull request #19 from yushijinhun/ali
7d90d7c
实现 #16, #17, #18
No branches or pull requests
概述
目前,用户配置 authlib-injector 时,需要输入完整的 Yggdrasil API 地址,这是十分麻烦的。尽管通过 DnD 方式添加 Yggdrasil 服务端可以避免输入 API 地址,但此功能的使用率并不高。
此提案规定了一个 HTTP 响应头字段
X-Authlib-Injector-API-Location
,其被称为 API 地址指示(API Location Indication,简称 ALI)。ALI 的值可以是相对 URL(如/api/yggdrasil/
),也可以是绝对 URL(如https://skin.example.com/api/yggdrasil/
),它指向与当前页面相关联的 Yggdrasil API 地址。对启动器的改动
当用户添加某个 URL 为 Yggdrasil 服务器时,启动器向此 URL 发送 GET 请求。不论 HTTP 状态码是多少,如果响应中包含 ALI,则启动器重定向到其所指的 URL。这样的重定向允许进行多次,但必须有次数上限。在这里规定这个上限为 5 次。
如果 ALI 指向其自身(比较时除去末尾
/
),则该 ALI 应当被忽略,当前 URL 即为 API 地址。需要注意的是,ALI 仅用于确定 Yggdrasil API 地址,即仅在添加 Yggdrasil 服务器时被考虑。一旦 Yggdrasil 服务器被添加,其 API 地址就不再发生改变,无论服务器的后续响应中是否包含 ALI。此外,启动器应当显示真正的 API 地址,而不是重定向之前的。
对 authlib-injector 的改动
当 authlib-injector 运行在 MC 服务端上时,其支持 ALI,实现方式与启动器相同;当 authlib-injector 运行在 MC 客户端上时,其不支持 ALI(这里认为启动器已经处理过 ALI,传入的 API 地址即为真正的 API 地址)。
判断运行环境是客户端还是服务端的方法,见 #16。
例子
如果 #16 、 #17 及本提案可以被实现,那么就会有以下效果:
假定
https://example.com/
是一个皮肤站,其 Yggdrasil API 地址为https://skin.example.com/api/yggdrasil
。页面https://example.com/
使用了 ALI。example.com
。-javaagent:authlib-injector.jar=example.com
。欢迎诸位就本提案提出意见。
The text was updated successfully, but these errors were encountered: