首页 > 解决方案 > 如何修复控制台消息:Cookie“ARRAffinity”将很快被拒绝?

问题描述

我在 Azure Web 服务器/门户上有一个静态网站,其中包含我们公司的文档。最近,我一直在更改设置 cookie 的代码,以确保它们符合浏览器 SameSite 要求,如下所述: https ://developer.mozilla.org/en-US/docs/Web/HTTP/Headers /Set-Cookie/SameSite

我已经能够修复所有创建我的 cookie 的脚本,但是在今天测试它们时,我看到有这个 cookie 消息仍然出现在我的 FireFox 控制台中:

Cookie“ARRAffinity”将很快被拒绝,因为它的“sameSite”属性设置为“none”或无效值,没有“secure”属性。要了解有关“sameSite”属性的更多信息,请阅读 https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite

此消息仅在我从站点清除缓存并加载页面时出现。一旦我第二次重新加载页面或之后加载任何其他页面,我就不再看到该消息。

我相信这个 ARRAffinity cookie 在技术上来自 Azure 的 Application Insights (AI)——或者 Azure Web 服务器上的东西。它根本不会出现在我们的 javascript 文件中。我们使用人工智能进行分析。这是大约两年前我们从 Azure 获得的代码片段。它被注入到我们网站上每个 .htm 页面的标题中:

var appInsights=window.appInsights||function(a){
        function b(a){c[a]=function(){var b=arguments;c.queue.push(function(){c[a].apply(c,b)})}}var c={config:a},d=document,e=window;setTimeout(function(){var b=d.createElement("script");b.src=a.url||"https://az416426.vo.msecnd.net/scripts/a/ai.0.js",d.getElementsByTagName("script")[0].parentNode.appendChild(b)});try{c.cookie=d.cookie}catch(a){}c.queue=[];for(var f=["Event","Exception","Metric","PageView","Trace","Dependency"];f.length;)b("track"+f.pop());if(b("setAuthenticatedUserContext"),b("clearAuthenticatedUserContext"),b("startTrackEvent"),b("stopTrackEvent"),b("startTrackPage"),b("stopTrackPage"),b("flush"),!a.disableExceptionTracking){f="onerror",b("_"+f);var g=e[f];e[f]=function(a,b,d,e,h){var i=g&&g(a,b,d,e,h);return!0!==i&&c["_"+f](a,b,d,e,h),i}}return c
    }({
        instrumentationKey:"<The Key>"
    });

    window.appInsights=appInsights,appInsights.queue&&0===appInsights.queue.length&&appInsights.trackPageView(); 

(请注意,<The Key>在上面的代码片段中,实际上是 Azure 在我们设置和配置 AI 资源时提供给我们的唯一多字符字符串。出于隐私考虑,我在此处将其删除。)

此后,我重新访问了获得该代码的站点,但该代码段已更改为更新的内容: https ://docs.microsoft.com/en-us/azure/azure-monitor/app/javascript#snippet-based-设置

我不确定我是否需要做任何事情来解决这个问题。

ARRAffinity cookie 是否来自 Microsoft 创建的某些服务器端脚本?我需要做任何事情来解决这个控制台消息吗?如果是这样,是什么?

标签: azure-application-insightssamesite

解决方案


ARRAffinity cookie 由 Azure 自动创建。您可以通过转到配置-->常规设置将其关闭,然后单击应用服务中的关闭,如下所示。

在此处输入图像描述

由于您的网站是静态网站,因此我认为这不是问题。事实上,对于任何云原生应用程序,都建议将 ARR Affinity 关闭。

关闭 ARR Affinity 后,将有效使用所有应用服务实例(在负载平衡的环境中)。

如果打开 ARR Affinity,则给定会话的所有请求都将发送到同一台服务器,无论其负载如何。

默认情况下,该设置启用以支持需要会话粘性的旧版应用程序。


推荐阅读