我有一个VMSS,其中有多个实例,其中部署了Java应用程序。 VMSS连接到应用程序网关。网关已启用会话关联。
是否可以覆盖或告诉网关使用Java应用程序创建的cookie?
之所以需要它,是因为,当一个请求进入具有多个参数的应用程序网关时,该处理由Java应用程序完成。此处理将创建一个唯一的ID记录,将用户重定向到该记录。
当此重定向请求到达应用程序网关时,网关会将请求发送到不存在唯一ID的另一台服务器,从而引发错误。
我的想法:当请求到达网关并到达Java程序时,我创建了一个包含一些信息的cookie。该cookie被发送回,并且在重定向请求时,我使用相同的cookie来标识服务器。
这可能吗?
我可以使用应用程序cookie并告诉应用程序网关使用该cookie来标识服务器吗?
答案 0 :(得分:0)
这可能可以告诉网关使用应用程序创建的cookie并重写HTTP标头。
取自rewriting HTTP headers with Application Gateway。 HTTP标头重写支持仅适用于Standard_V2和WAF_v2 SKU。
Application Gateway支持多个server variables,可帮助您存储有关请求和响应的其他信息。您可以重写请求和响应中的所有标头,但主机,连接和升级标头除外。您还可以使用应用程序网关创建自定义标头,并将其添加到通过它路由的请求和响应中。
但是,有一些limitations:
如果响应具有多个同名标题,则 重写这些标头之一的值将导致删除 响应中的其他标头。通常会发生这种情况 Set-Cookie 标头,因为您可以有多个 Set-Cookie 标头 作为回应。一种这样的情况是当您使用应用程序服务时 与应用程序网关并已配置基于cookie的会话 在应用程序网关上的亲和力。在这种情况下,响应将 包含2个Set-Cookie标头:一个由应用程序服务使用,即 Set-Cookie: ARRAffinity = ba127f1caf6ac822b2347cc18bba0364d699ca1ad44d20e0ec01ea80cda2a735; Path = /; HttpOnly; Domain = sitename.azurewebsites.net 另一个用于应用程序网关关联性,即Set-Cookie: 应用GatewayAffinity = c1a2bd51lfd396387f96bl9cc3d2c516;路径= /。 在这种情况下重写Set-Cookie标头之一可能会导致 从响应中删除另一个Set-Cookie标头。
根据我的理解,您可以重写其中一个set-cookie标头,以保持 Set-Cookie 标头不变。