gpt4 book ai didi

azure - Azure 上的 ServiceStack v4.0.24.0 Google OAuth 失败并显示 502

转载 作者:行者123 更新时间:2023-12-01 05:10:52 25 4
gpt4 key购买 nike

将 ServiceStack 升级到 4.0.24.0 后,我在尝试使用 Google OAuth 登录时开始收到以下错误。

enter image description here

在我的开发机器上本地也同样有效。自 4.0.21.0 以来有什么变化吗?

最佳答案

这是一个非常奇怪的问题,但最近做了一些挖掘,这是我发现的。 Azure 网站似乎不喜欢从 OAuth2Provider 上的 Authenticate 方法返回的 HttpResult

重要注意事项:此问题仅在托管在 Azure 网站上时才会出现。 ServiceStack OAuth2Providers(4.0.24 到 4.0.40)在其他地方托管时按预期工作。

具体来说,它不喜欢在返回 HttpResult 时设置 Content-Length header 。我不确定为什么会出现这种情况,因为它在本地工作并且部署到 AWS 上我自己的 IIS 主机时。

我已经created a repository您可以自行部署以突出显示此问题。

Azure 网站对此响应的解释似乎与标准 IIS 设置(例如,通过干净 VM 上的 Web 安装程序安装)不同,这似乎导致了问题。

一个(不是很好)解决方法是使用 GlobalResponseFilter 剥离 Content-Length header >GoogleOAuth2Provider 响应。

我已经对此进行了测试,确实按预期工作,并且我能够使用 Google OAuth 登录。以下是使用 GlobalResponseFilter 解决此问题的示例。

GlobalResponseFilters.Add((req, res, dto) =>
{
if (!req.PathInfo.EndsWith("/auth/GoogleOAuth", true, CultureInfo.InvariantCulture))
{
return;
}
HttpResult httpResult = dto as HttpResult;
if (httpResult != null && httpResult.Headers.ContainsKey("Content-Length"))
{
httpResult.Headers.Remove("Content-Length");
}
});

如果有人能指出 Azure 网站为何这样做,那就太好了。

希望这有帮助。

关于azure - Azure 上的 ServiceStack v4.0.24.0 Google OAuth 失败并显示 502,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com