WinInet 和 SessionCookies

Posted

技术标签:

【中文标题】WinInet 和 SessionCookies【英文标题】:WinInet and SessionCookies 【发布时间】:2011-07-23 19:55:52 【问题描述】:

大家好,晚上好。

我的应用程序使用 InternetSetCookie 创建其工作所需的(会话)cookie。但是我想删除以 ex 命名的 cookie。每次请求后的“badcookie”

InternetSetCookie("http://www.domain.com", "badcookie", ""); 和 InternetSetCookie("http://www.domain.com", NULL, "badcookie=")

但是...在最好的情况下,它会发送没有任何值的 cookie,仅此而已。

我的问题是如何完全删除这个 cookie? (不,我不想让它们永久化并调用 cleanup() 10 次,也许我会为每个请求创建线程,但如果我这样做会很糟糕)

【问题讨论】:

我不知道 WinINET API,但只是让 cookie 过期。我会将其添加为答案,但我不知道执行此操作的语法。这就是您在 ASP.NET 中的做法。将过期日期设置为过去的日期,cookie 将在客户端被删除。 ^ 这适用于我的应用程序创建的 cookie,但我只是通过 IE 删除了同名的 cookie,因此我发送了两个“badcookie”,这样只能删除一个。我建议将纪元时间设置为到期。然而,这是一个适当的骗局,所以也许还有其他解决方案,我将把它打开:)。谢谢大卫,别担心我会以你的名义添加解决方案;)但也许还有其他人! 很高兴能为您提供帮助。我把我的评论作为答案,以防它在路上有所帮助。祝你好运! 【参考方案1】:

InternetSetCookie("http://domain.com", NULL, "badcookie=bye; expires = Sat,01-Jan-1970 00:00:00 GMT");

这删除了包含其他一些 cookie 的完整 txt 文件。在我使用 www.domain.com 之前,我发现这是个问题……现在我面临与您发布的链接相同的问题(丢失更多 cookie),但我的问题现在得到了解答。

PS 这也适用于会话 cookie。

【讨论】:

【参考方案2】:

我的答案不是 100% 完整,但也许这是一个开始。我建议将 cookie 的过期时间设置为过去,因为这将强制客户端清除 cookie。我不熟悉 WinINET 语法,所以也许有人有更好的答案。我更像是一个 ASP.NET 人 - 但这个 article 似乎建议如何使 cookie 过期。

根据 gaor 对我最初评论的回应,听起来还有一些工作要做才能完全解决这个问题。但希望这会有所帮助,并让有人指出正确的方向。

希望这会有所帮助!

【讨论】:

以上是关于WinInet 和 SessionCookies的主要内容,如果未能解决你的问题,请参考以下文章

Wininet - 如何下载和验证 SSL 证书

delphi中的动态数组和wininet?

C++ WinInet 和回调不起作用

WinInet 和 SessionCookies

使用“wininet”和“windows.h”时如何解决“IServiceProvider”不明确?

wininet 或 winhttp,这是 POST 请求的首选