Azure 门户:错误请求 - 请求太长
Azure Portal: Bad Request - Request Too Long
我刚刚在尝试 运行 a built-in b2c edit policy from portal.azure.com 时收到以下错误。我打开了门户的 2 个选项卡。为什么我会收到此错误消息?
Bad Request - Request Too Long
HTTP Error 400. The size of the request headers is too long.
注:我经历过this same error message when testing active-directory-b2c-dotnet-webapp-and-webapi sample project。提供的原因是我发送了太多 cookie。是同一个问题吗?
如果是同样的问题,在创建新问题之前不应该陈旧cookies be deleted吗?
我确实看到很多 https://login.microsoftonline.com
的 cookie
问题是因为在多个租户和创建 cookie 的租户之间切换。我们确实经常面临这个问题。据我所知,唯一的解决办法是删除 cookie。
如果您是 chrome 爱好者,有一个编辑 cookie 扩展程序,请使用它并尝试删除 login.microsoftonline.com 和 portal.azure.com
的 cookie
我认为问题在于示例 MVC 应用程序中使用的默认 OWIN 实现,您唯一能做的就是关闭浏览器(和所有其他实例)并重新启动。
您可以看到 cookie 越来越大,然后浏览器最终放弃。
我还没有尝试过上面关于插件的方法,但会试一试,因为它比杀死所有浏览器更流畅 windows
错误HTTP 400: Size of header request is too long一般是因为cookie太多或cookie太大 .
Azure AD B2C 的登录通过 login.microsoftonline.com,几乎所有 Microsoft 服务(O365、Azure 等)也是如此。因此,如果您在这些服务中登录了多个帐户,您就会积累会导致此问题的 cookie。
对于开发人员来说,这肯定比最终用户更频繁地发生,因为开发人员使用他们的公司帐户登录 Azure 门户,可能还使用 B2C 管理员帐户,然后使用多个 B2C 应用程序测试登录。
从长远来看,答案将是 allow Azure AD B2C customers to specify their own custom domain. This gives the application's B2C cookies isolation from everything else in login.microsoftonline.com. As of 2019-06-23, this feature is still under development. You can support this feature and keep track of its progress by voting for it in the Azure AD B2C feedback forum: Customer-owned domains
但是,在此期间作为解决方法,您可以探索以下两点:
清除您的 cookies。这肯定每次都有效,只是很麻烦,特别是如果呈现给您的最终用户。
限制您在令牌中包含的声明数量。您 include in your policy 的属性越多,您最终会收到更长的 http 请求,这会减少其他 Microsoft 属性
的 cookie 的余地
Note: This is the same question as:
2018-11 更新:
Azure AD B2C 允许您 use b2clogin.com 而不是 login.microsoftonline.com 这将大大减少您对这个问题的暴露 因为您将不再与其他 Microsoft 服务共享 cookie。
2022-05 更新:
Customer-owned domains 现已上线,使用删除线相应地更新了答案。此外,修复了反馈 link.
如果您的 Azure 帐户遇到 "HTTP Error 400 Bad Request - Request Too Long",您可能还需要检查 URL 是否已被 Microsoft 更新。
就我而言,我想查看我的 Azure 订阅。我曾经去过这个URL:
https://account.azure.com/Subscriptions
但最近它开始给我带来 "Bad Request Headers Too long" 问题。
我检查了 URL 并发现现在这是访问我的订阅的正确位置:
https://account.windowsazure.com/Subscriptions
我收到了多个答案,这是因为我加入了太多的 Active Directory。当我遇到这个问题时,我是零活动目录的一部分。在再次发生这种情况之前,我清除了我的饼干并走了大约两步。该请求似乎在请求中发送了许多微软 cookie、azure cookie、facebook cookie、google cookie、adsense cookie 和 linkedin cookie,但删除它们都无济于事。我终于通过使用隐身标签了。
tl;dr 试试隐身标签
您可能还想查看 b2clogin.com 描述的 here。根据微软:
- Cookies are no longer shared with the other Microsoft services.
我刚刚在尝试 运行 a built-in b2c edit policy from portal.azure.com 时收到以下错误。我打开了门户的 2 个选项卡。为什么我会收到此错误消息?
Bad Request - Request Too Long HTTP Error 400. The size of the request headers is too long.
注:我经历过this same error message when testing active-directory-b2c-dotnet-webapp-and-webapi sample project。提供的原因是我发送了太多 cookie。是同一个问题吗?
如果是同样的问题,在创建新问题之前不应该陈旧cookies be deleted吗?
我确实看到很多 https://login.microsoftonline.com
的 cookie问题是因为在多个租户和创建 cookie 的租户之间切换。我们确实经常面临这个问题。据我所知,唯一的解决办法是删除 cookie。
如果您是 chrome 爱好者,有一个编辑 cookie 扩展程序,请使用它并尝试删除 login.microsoftonline.com 和 portal.azure.com
的 cookie我认为问题在于示例 MVC 应用程序中使用的默认 OWIN 实现,您唯一能做的就是关闭浏览器(和所有其他实例)并重新启动。
您可以看到 cookie 越来越大,然后浏览器最终放弃。
我还没有尝试过上面关于插件的方法,但会试一试,因为它比杀死所有浏览器更流畅 windows
错误HTTP 400: Size of header request is too long一般是因为cookie太多或cookie太大 .
Azure AD B2C 的登录通过 login.microsoftonline.com,几乎所有 Microsoft 服务(O365、Azure 等)也是如此。因此,如果您在这些服务中登录了多个帐户,您就会积累会导致此问题的 cookie。
对于开发人员来说,这肯定比最终用户更频繁地发生,因为开发人员使用他们的公司帐户登录 Azure 门户,可能还使用 B2C 管理员帐户,然后使用多个 B2C 应用程序测试登录。
从长远来看,答案将是 allow Azure AD B2C customers to specify their own custom domain. This gives the application's B2C cookies isolation from everything else in login.microsoftonline.com. As of 2019-06-23, this feature is still under development. You can support this feature and keep track of its progress by voting for it in the Azure AD B2C feedback forum: Customer-owned domains
但是,在此期间作为解决方法,您可以探索以下两点:
清除您的 cookies。这肯定每次都有效,只是很麻烦,特别是如果呈现给您的最终用户。
限制您在令牌中包含的声明数量。您 include in your policy 的属性越多,您最终会收到更长的 http 请求,这会减少其他 Microsoft 属性
的 cookie 的余地
Note: This is the same question as:
2018-11 更新:
Azure AD B2C 允许您 use b2clogin.com 而不是 login.microsoftonline.com 这将大大减少您对这个问题的暴露 因为您将不再与其他 Microsoft 服务共享 cookie。
2022-05 更新:
Customer-owned domains 现已上线,使用删除线相应地更新了答案。此外,修复了反馈 link.
如果您的 Azure 帐户遇到 "HTTP Error 400 Bad Request - Request Too Long",您可能还需要检查 URL 是否已被 Microsoft 更新。
就我而言,我想查看我的 Azure 订阅。我曾经去过这个URL: https://account.azure.com/Subscriptions
但最近它开始给我带来 "Bad Request Headers Too long" 问题。 我检查了 URL 并发现现在这是访问我的订阅的正确位置: https://account.windowsazure.com/Subscriptions
我收到了多个答案,这是因为我加入了太多的 Active Directory。当我遇到这个问题时,我是零活动目录的一部分。在再次发生这种情况之前,我清除了我的饼干并走了大约两步。该请求似乎在请求中发送了许多微软 cookie、azure cookie、facebook cookie、google cookie、adsense cookie 和 linkedin cookie,但删除它们都无济于事。我终于通过使用隐身标签了。
tl;dr 试试隐身标签
您可能还想查看 b2clogin.com 描述的 here。根据微软:
- Cookies are no longer shared with the other Microsoft services.