有没有一种方法可以为仅限于1个请求设置cookie?

13
我希望能够使用JavaScript或jQuery设置一个cookie,只发送一次。我可以在发出请求之前设置一个到期日期为1秒的cookie,但这似乎有些微妙。我想知道是否有一种方法可以保证cookie在1个请求中生效,且仅在一个请求中生效... 我已经查看了 MDN文档,但没有找到符合要求的内容。你有什么想法吗?

你尝试过在请求完成后通过代码删除cookie吗? - James Donnelly
在每个页面上完成相关操作后,请删除cookie。 - George Irimiciuc
我不建议你使用这种方式来操作cookie。最好在服务器端进行管理。无论如何,你可以在每个请求中添加和删除cookie(调用函数->添加cookie->完成请求->删除cookie)。 - Marcos Pérez Gude
我们正在使用cookie来允许两个系统进行通信(其中一个有点过时...而且我无法访问代码库)。我不能保证另一个站点会清理我的cookie...如果它没有这样做,那么我需要能够从门卫那里识别出来并做出适当的响应。持续1个请求的cookie似乎是答案。我知道这不是完美的 - 这就是为什么我希望有更好的解决方案... - jaybeeuu
3个回答

0

这里有一种方法:

  1. 以JSON格式编码cookie的值,例如:
var c = {"foo":"bar"}
Cookies.set('test',JSON.stringify(c))

将cookie值添加到nonce值中,例如cookie本身的期望过期时间。
var c = {"foo":"bar","expire_time":1612561366588}
Cookies.set('test',JSON.stringify(c))
  1. 一旦时间过去,使用标准的客户端或服务器 cookie 删除方法来使 cookie 过期,例如:
var c = JSON.parse(Cookies.get('test'))
if (c.expire_time < (new Date()).getTime()) {
  Cookies.remove('test')
}

0
你可以使用一个AJAX完成处理程序,在每个请求之后删除cookie。

https://api.jquery.com/ajaxComplete/

$(document).ajaxComplete(function() {
    // delete your cookie
});

-2

1
谢谢,我知道可以删除和创建cookie,但我希望有一种方法告诉浏览器仅在1个请求中保留cookie。所以那个答案并没有真正帮助到我。请查看我对我的问题评论的回复。 - jaybeeuu
具体来说,如果在解析 HTML 的同时请求 CSS/JS/其他资源,而这些资源的请求可能与脚本执行无关,那么这种做法是不安全的。 - Elliott Beach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接