Cookie正在删除

Ric*_*cha 5 asp.net cookies ajax jquery

我有一个asp.net mvc应用程序,我发生了这个奇怪的事情,我不知道为什么.

语境:

我有一个页面,允许用户绘制和编辑图像.这个页面有一个功能,每5分钟,她使用jquery对服务器进行ajax调用,在数据库上保存项目的当前状态,另一个调用保存存储在适当位置的项目的图像.

问题:

通过最小化浏览器,启动此功能后,在ajax调用服务器后,将删除cookie Customer .但是当镀铬最大化时,这样可以正常工作.

笔记:

  1. 这仅在浏览器最小化时发生
  2. 至少在chrome和firefox中都会发生这种情况.
  3. 这只发生在生产环境中.在我的本地机器和视觉工作室我无法重现这个问题
  4. asp.net会话cookie是mantainned

我知道你很难仅仅提供这些信息,但是,如果你能给我提供线索,那将是非常有帮助的.我正在尝试揭露问题,以便我们可以匹配类似的问题,以找到针对此案例的最佳解决方案.

先感谢您

[编辑]:

我对这个问题有一些新的看法:

  1. 使用Chrome版本63.0.3239.84(官方版本)(64位);
  2. Firefox量程57.0(64位);
  3. 与我首先想到的相反,即使浏览器没有最小化,并且在页面加载后精确3分钟(如果我调用该函数),也会发生这种情况
  4. cookie没有被删除,但cookie的内容是: 在此输入图像描述
  5. 这是一个asp.net Web应用程序
  6. 控制台不会出现任何错误
  7. 查询版本为2.1.3
  8. 按照jquery通话代码:

    makeAjaxCall(ajaxData) {
    var localData = ajaxData.data ? ajaxData.data : {},
        urlVariables = {};
    
    localData.cmd = ajaxData.cmd;
    
    var controlerURL = ajaxData.uploadUrl ? HelperJSViewBag.getValue("ajaxCAllUploadURL") : ajaxData.controller;
    
    if (typeof ajaxData.data.urlVariables == "undefined")
        ajaxData.data.urlVariables = [];
    
    let editorVersion = "";
    let forceEditorVersion = "";
    
    if (typeof UrlParameters != "undefined") {
        editorVersion = UrlParameters.getInstance().editorVersion;
        forceEditorVersion = UrlParameters.getInstance().forceEditorVersion;
    }
    else if (typeof HLinks != "undefined") {
        editorVersion = HLinks.getUrlVariable("editorVersion");
        forceEditorVersion = HLinks.getUrlVariable("forceEditorVersion");
    }
    
    if (editorVersion.length > 0)
        ajaxData.data.urlVariables.push({
            name: "editorVersion",
            value: editorVersion,
        });
    
    if (forceEditorVersion.length > 0)
        ajaxData.data.urlVariables.push({
            name: "forceEditorVersion",
            value: forceEditorVersion,
        });
    
    if (typeof ajaxData.data.urlVariables != "undefined" && ajaxData.data.urlVariables.length > 0)
        for (var i = 0; i < ajaxData.data.urlVariables.length; i++)
            urlVariables[ajaxData.data.urlVariables[i].name] = ajaxData.data.urlVariables[i].value;
    
    localData = this.fillLocalData(localData);
    
    return $.ajax({
        type: 'POST',
        data: localData,
        url: controlerURL + "?" + $.param(urlVariables),
        success: function (data) {
            try {
                var result = JSON.parse(data),
                    status = result.status;
    
                delete result.status
                switch (status) {
                    case 1: ajaxData.sucess && ajaxData.sucess(result.data); break;
                    case 2: ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(result)); break;
                }
            }
            catch (ex) {
                ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(ex));
            }
        },
        error: function (data) {
            ajaxData.insucess && ajaxData.insucess(ajaxData.errorHandler && ajaxData.errorHandler.handle && ajaxData.errorHandler.handle(data));
        }
    });
    }
    
    Run Code Online (Sandbox Code Playgroud)

Jef*_*ler 0

我想在 ASP.NET 端看到你的代码,但如果没有这个,我只能猜测:也许检查一下你是否设置了 cookie 过期日期?以下是创建的 cookie 有效期为 1 天的示例:

Dim myCookie As HttpCookie = New HttpCookie("Customer")
myCookie.Expires = Now.AddDays(1)
Response.Cookies.Add(myCookie)
Run Code Online (Sandbox Code Playgroud)

如果省略 myCookie.Expires 属性,则 cookie“将在用户会话过期时过期”,参考。https://msdn.microsoft.com/en-us/library/78c837bd.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1