【问题标题】:HttpWebRequest losing cookiesHttpWebRequest 丢失 cookie
【发布时间】:2010-01-23 21:24:48
【问题描述】:

我有一个使用基于 cookie 的身份验证与 ASP.NET Web 服务通信的客户端应用程序。 (客户端调用一个登录方法,该方法设置一个持久性 cookie,然后在登录会话中的请求之间重复使用)。

这已经有一段时间了,但我已经开始从新客户端使用的几台机器上收到错误报告,这些报告似乎表明 cookie 尚未成功往返。 (登录请求都是成功的,但所有后续请求都失败,并 302 重定向到登录资源)

我正在使用一个 CookieContainer,我手动将其附加到我使用的每个 HttpWebRequest,以确保在每个请求中都保留 cookie。

这些机器上是否有一些“安全”软件正在拦截/阻止 cookie 传输? (我 am 使用 SSL)。如果是这样,有什么可以做的来判断是什么阻碍了?

【问题讨论】:

  • 您确定将 same CookieContainer instance 附加到每个 HttpWebRequest 吗? “我用来确保在每个请求中都保留 cookie”是什么意思?你如何确保这一点?
  • 你能嗅出与 fiddler 的通信吗?
  • 是的,我使用的是同一个容器……它在 99% 的连接机器上运行良好,只有少数根本无法运行。 (这句话意味着我将相同的 cookiecontainer 附加到每个 Web 请求,以便各个请求共享同一组 cookie。
  • @Rubens,我无法在这些机器上轻松获得 fiddler 或其他跟踪工具,因为它们不在现场。我在应用程序中添加了一些额外的日志记录,希望能隔离问题。我曾尝试使用本地机器进行复制,但无法这样做。我想我的主要问题是“安全”软件是否有可能以这种方式干扰我的应用程序(特别是因为 SSL 应该保护传输中的数据)。

标签: c# cookies httpwebrequest


【解决方案1】:

如果您使用 SSL,安全软件甚至可以看到您的数据包内部,这与您完全不同。 SSL 数据甚至在它们进入数据包形式之前就应该被加密;通常它们甚至在使用 send() 到套接字之前就被加密了。除非你有一些很棒的安全软件破坏了 SSL 加密并且可以查看数据包内部,否则这是不可能的。

每次都是同一台机器出现故障吗?还是有些机器有时会随机出现故障,而另一些机器有时会出现故障?如果是后者,则可能是服务器上发生了一些事情,而不是客户端。

【讨论】:

  • 同一套3台机器老是出故障。当这些机器的用户切换到其他机器时,一切似乎对他们来说都很好。我已经部署了一些更新的诊断程序,希望我能够从这些机器中捕获更多信息。
  • 您可以为您的应用启用跟踪记录。看到这个:ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html。然后查看日志文件,看看为什么没有发送 cookie。
  • 另外,客户端和服务器之间是否可能存在负载均衡器?因此,如果机器 M1 在响应中设置 cookie,但如果后续请求将发送到机器 M2,那么 M2 显然不知道如何处理该 cookie,并且可能会丢弃它。
猜你喜欢
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 2018-03-12
  • 2015-01-18
相关资源
最近更新 更多