gpt4 book ai didi

azure - 多个关联 cookie

转载 作者:行者123 更新时间:2023-12-03 04:28:12 25 4
gpt4 key购买 nike

我有多个具有以下特征的 azure 网站

  • 每个网站都在自己的网络服务器上运行(应用服务计划)
  • 他们正在运行多个实例
  • 他们在共享域下拥有自己的子域
  • 他们(有意)启用了 ARR

其中一个站点是主站点,并使用不带子域的域作为其主机名。这是我的问题的根本原因。

分别访问 sub.domain.comdomain.com(两个不同的网站,在不同的应用服务计划中)将为每个网站设置一个关联 Cookie .

cookie 规范规定 cookie 应包含在对 cookie 域属性的任何子域的请求中。这意味着,如果我现在访问 sub.domain.com,浏览器将包含两个关联 Cookie,因为它在技术上是 domain.com 的子域。

Azure 的负载均衡器显然只查看第一个包含的关联 cookie。如果这恰好属于 domain.com ,它将包含无效值,并且负载均衡器将请求轮询到随机的空闲实例。响应将包含一个带有有效亲和性 cookie 的 set-cookie header ,但无论如何,这将作为第二个 cookie 包含在后续请求中,并且问题仍然存在。只要 domain.com 关联 Cookie 以及我们网站所依赖的粘性 session 存在,这就会有效地完全禁用所有子域的 ARR。

目前,我已在 domain.com 网站上禁用 ARR,因为它仅在单个实例中运行。但这只有在我们处于预制作阶段时才有可能实现。在不久的将来的某个时候,我将需要扩展到至少两个实例,因为 azure SLA 需要它才能生效。

可以通过将 domain.com 上的网站迁移到子域(例如:www.domain.com)来解决该问题,但我真的更喜欢不。

理想情况下,我希望负载均衡器检查所有包含的关联 cookie,而不仅仅是第一个。但在这个问题得到解决之前,我很想知道有什么解决方法。据我所知,我可以控制的 ARR 的唯一方面是是否应该启用它。

最佳答案

以下是 Azure 支持团队对此问题的回复:

I wanted to let you know the status of the issue. The product team has analyzed the issue and they will look into it. They have agreed that the best solution is for ARR to iterates thru all cookies.

Unfortunately right now we don’t have any ETA so for now the best workaround, as you said, is adding the www to your naked domain.

说实话,我认为这是最好的结果。 Azure 已认识到该问题,并致力于纠正它。在那之前,如果您需要粘性 session ,可能的解决方法是:

  • 不要在不共享应用服务计划的网站上同时使用裸域和子域
  • 跨网站实例使用共享 session ,从而完全消除对 ARR 的需求。在 ASP.NET 中,使用 SQL、Redis、Azure 存储或其他内容作为 session 存储,可以轻松设置不同的 session 状态提供程序。

关于azure - 多个关联 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40546219/

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