【问题标题】:Remove cookies from jquery ajax calls从 jquery ajax 调用中删除 cookie
【发布时间】:2011-09-28 03:51:28
【问题描述】:

我会做 jquery ajax 调用丢弃每个 cookie,所以我可以为每个调用创建一个新会话。

有没有办法做到这一点?

谢谢

【问题讨论】:

  • 你的意思是:你设置的cookies?您可以构建一个函数来执行此操作并在您的 ajax 调用中调用它吗?不过我真的不明白这一点。
  • 我特别指的是会话 cookie。我希望能够进行 ajax 调用以丢弃当前会话。因此,我会尽一切努力删除或忽略将在 ajax 请求中发布的会话 cookie。它更有意义吗?请告诉我。
  • @Harun @JMax 我必须这样做以进行测试,所以我不太关心当前会话。
  • 好的,这不是用于生产目的:)。很高兴我们提供的解决方案回答了您的问题
  • 我知道这现在是题外话了,但是,如果不需要在 varnish 中设置特殊规则(例如)

标签: session jquery


【解决方案1】:

AJAX 请求正是一个 HTTP 请求 (XMLHTTPRequest)。 Cookie 在 AJAX 请求-响应标头中来回发送,以便跨多个 HTTP 请求维护用户会话的状态。

HTTP 本质上是一种无状态协议,因此 cookie 用于跨多个 HTTP 请求维护用户会话的状态。

无需删除 Cookie,而是将所有静态组件(如图像)托管在无 Cookie 域中。以下网址可能会为您提供一些信息,

http://www.ravelrumba.com/blog/static-cookieless-domain/

【讨论】:

  • 这完全是正确的答案。我不知道为什么另一个在顶部!
【解决方案2】:

正如 Harun 指出的那样,也许您应该考虑一个更广泛的解决方案,而不是删除会改变整个用户会话而不仅仅是 AJAX 调用的会话 cookie。

为了回答您的问题,您可以删除您设置的 cookie(前提是您是自己设置的,而不是其他框架设置的):

$.cookie("session", null);
$.ajax( url, [settings] )

但是,这可能不是好的解决方案,因为您将在每次 ajax 调用时删除整个用户会话。你应该告诉我们更多关于你在做什么,以便我们可以帮助你。

【讨论】:

  • 在 JavaScript 中执行它是一个坏主意,因为它不能保证被服务器清除。或许使用JS作为回退层是可以的,但是服务器应该删除cookie。
  • 很多时候你做这种事情,是因为你和服务器有敌对关系。
猜你喜欢
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 2013-09-21
  • 1970-01-01
相关资源
最近更新 更多