Skip to main content
 首页 » 编程设计

jquery之正在删除 Cookie

2026年09月08日2qq78292959

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

上下文:

我有一个允许用户绘制和编辑图像的页面。该页面有一个功能,每 5 分钟,她使用 jquery 对服务器进行一次 ajax 调用,将项目的当前状态保存在数据库中,并再次调用以保存项目的图像存放在适当的地方。

问题:

在浏览器最小化的情况下,启动此功能后,在对服务器进行 ajax 调用后,cookie 客户将删除。但是当镶边最大化时,效果很好。

注释:

  1. 只有在浏览器最小化时才会发生这种情况
  2. 至少在 Chrome 和 Firefox 中,这种情况正在发生。
  3. 这仅发生在生产环境中。在我的本地计算机和 Visual Studio 上我无法重现该问题
  4. 维护 asp.net session cookie

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

提前谢谢

[编辑]:

我对这个问题有一些新的认识:

  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)); 
        } 
    }); 
    } 
    

请您参考如下方法:

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

Dim myCookie As HttpCookie = New HttpCookie("Customer") 
myCookie.Expires = Now.AddDays(1) 
Response.Cookies.Add(myCookie) 

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