Cookie正在删除
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie正在删除相关的知识,希望对你有一定的参考价值。
我有一个asp.net mvc应用程序,我发生了这个奇怪的事情,我不知道为什么。
语境:
我有一个页面,允许用户绘制和编辑图像。这个页面有一个功能,每5分钟,她使用jquery对服务器进行ajax调用,在数据库上保存项目的当前状态,另一个调用保存存储在适当位置的项目的图像。
问题:
通过最小化浏览器,启动此功能后,在ajax调用服务器后,将删除cookie Customer。但是当镀铬最大化时,这样可以正常工作。
笔记:
- 这仅在浏览器最小化时发生
- 至少在chrome和firefox中发生了这种情况。
- 这只发生在生产环境中。在我的本地机器和视觉工作室我无法重现这个问题
- asp.net会话cookie是mantainned
我知道你很难仅仅提供这些信息,但是,如果你能给我提供线索,那将是非常有帮助的。我正在尝试揭露问题,以便我们可以匹配类似的问题,以找到针对此案例的最佳解决方案。
先感谢您
[编辑]:
我对这个问题有一些新的看法:
- 使用Chrome版本63.0.3239.84(官方版本)(64位);
- Firefox量程57.0(64位);
- 与我首先想到的相反,即使浏览器没有最小化并且在页面加载后精确3分钟(如果我调用该函数),也会发生这种情况
- cookie没有被删除,但cookie的内容是:
- 这是一个asp.net Web应用程序
- 控制台不会出现任何错误
- 查询版本为2.1.3
- 遵循
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的到期日期?以下是使用1天到期创建的Cookie的示例:
Dim myCookie As HttpCookie = New HttpCookie("Customer")
myCookie.Expires = Now.AddDays(1)
Response.Cookies.Add(myCookie)
如果省略myCookie.Expires属性,则cookie“将在用户会话到期时到期”,ref。 https://msdn.microsoft.com/en-us/library/78c837bd.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
- 您可以增加Cookie的到期时间(在您创建Cookie的代码中)。
- 您可以在代码中使用
localStorage
而不是Cookie来保存值。
例如qazxsw poi设置值和qazxsw poi从本地存储中获取值。
以上是关于Cookie正在删除的主要内容,如果未能解决你的问题,请参考以下文章
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段