可以将Azure应用程序网关cookie替换为应用程序cookie吗?

时间:2019-07-24 11:50:12

标签: java azure session-cookies azure-application-gateway azure-vm-scale-set

我有一个VMSS,其中有多个实例,其中部署了Java应用程序。 VMSS连接到应用程序网关。网关已启用会话关联。

是否可以覆盖或告诉网关使用Java应用程序创建的cookie?

之所以需要它,是因为,当一个请求进入具有多个参数的应用程序网关时,该处理由Java应用程序完成。此处理将创建一个唯一的ID记录,将用户重定向到该记录。

当此重定向请求到达应用程序网关时,网关会将请求发送到不存在唯一ID的另一台服务器,从而引发错误。

我的想法:当请求到达网关并到达Java程序时,我创建了一个包含一些信息的cookie。该cookie被发送回,并且在重定向请求时,我使用相同的cookie来标识服务器。

这可能吗?

我可以使用应用程序cookie并告诉应用程序网关使用该cookie来标识服务器吗?

1 个答案:

答案 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 标头不变。