iHiD
(Jeremy Walker)
1
您好。我们在 Exercism 使用 Discourse 作为论坛。感谢您在此方面所做的工作。
我们的流程的一部分是自动关闭 GitHub issue,并要求用户创建一个论坛帖子,将论坛帖子的正文作为 URL 的一部分。这之前一直运行良好,直到今天出现了一个帖子。
如果您访问 此 GitHub issue 并点击“此链接”链接,您会看到一个 OAuth 循环,最终显示“糟糕。此讨论论坛的软件遇到了意外问题。我们对造成的不便深表歉意”。
如果您已登录论坛,则可以正常工作,并且(至少对我来说是这样,我收到了一些维护人员的混合报告)。
我怀疑在 OAuth 设置或重定向路径上出现了某种编码问题。
万一不清楚,我录制了一个 15 秒的 Loom 视频来演示:Latest topics - Exercism - 4 September 2025 | Loom
嘿 @iHiD 感谢你的报告和重现步骤——这看起来确实是它链接到论坛时出现的编码错误:
我怀疑你缺少对 issue body 的 URL 编码。
提供的链接是:
https://forum.exercism.org/new-topic?title=Group%20all%20GitHub%20Actions%20updates%20into%20a%20single%20larger%20pull%20request&body=https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#groups--%0D%0A%0D%0AReduces%20the%20number%20of%20pull%20requests%20to%20review%20and%20voids%20blockages%20like:%0D%0A*%20#23%20vs.%0D%0A*%20#27%20vs.%0D%0A*%20#28%20by%20putting%20them%20all%20in%20a%20single%20pull%20request&category=free-pascal
body 中包含应该进行 URL 编码的文本,例如斜杠和井号。
虽然它直接可以工作,因为浏览器很智能并且可以处理这类事情,但我们的重定向逻辑是通过给定的参数设置目标 URL,并定位最初给定的参数——没有正确编码,我怀疑这就是导致这个特定重定向失败的原因。
使用经过 URL 编码的 body 的链接,我没有遇到这个问题。正确编码的链接看起来是这样的:
https://forum.exercism.org/new-topic?title=test&body=https%3A%2F%2Fdocs.github.com%2Fen%2Fcode-security%2Fdependabot%2Fworking-with-dependabot%2Fdependabot-options-reference%23groups--%250D%250A%250D%250AReduces%2520the%2520number%2520of%2520pull%2520requests%2520to%2520review%2520and%2520voids%2520blockages%2520like%3A%250D%250A*%2520%2323%2520vs.%250D%250A*%2520%2327%2520vs.%250D%250A*%2520%2328%2520by%2520putting%2520them%2520all%2520in%2520a%2520single%2520pull%2520request%26category%3Dfree-pascal&category=free-pascal
1 个赞
iHiD
(Jeremy Walker)
3
感谢您的迅速回复和确认!
我会请我们社区里的人来修复它。您可以放心地关闭此问题! 
1 个赞