【发布时间】:2013-07-17 21:32:05
【问题描述】:
我有一个 VB.NET 应用程序,它向运行 Cloudflare 的服务器上的脚本发送 POST 请求。从应用程序发送请求时,我总是收到错误,但是使用 Firefox 扩展来模拟请求可以正常工作。通过使用 Fiddler,我想我已经找到了问题的原因:
使用 Firefox 插件发送请求时,请求会附加一个额外的标头:
Cookie:__cfduidxxxxxxxxxxxx
此 cookie 来自 Cloudflare,但它来自哪里,即。如何获取此 cookie 值并将其与来自 VB 应用程序的请求一起发送?我尝试将 cookie 复制并粘贴到应用程序中,它运行良好,所以这让我得出结论,我需要这个 cookie,但是这个值对于每个用户都是唯一的,所以我不能简单地将它硬编码到应用程序中。
快速旁注:不确定这是否有帮助,但如果我从 VB 应用程序发送 GET 请求,它可以在没有 __cfduid cookie 的情况下正常工作。
【问题讨论】:
-
这是在 firefox->site 请求中,还是在 server->firefox 响应中?如果它在响应中,那么它是一个无效的 cookie。对于请求也不是特别好,因为它应该更像
key=value。 -
不确定您的确切意思,对我在该领域缺乏知识表示歉意。我可以在 HTTP REQUEST 标头中看到 cookie,即当我向服务器发送请求时
-
服务器应该发回一个 Set-Cookie: http 标头 - 这是在 Cookie: 标头上发回的值,对吧?您不能直接剥离该值并将其发送回您的请求吗?
-
啊,我看到它在没有 Cookie 的情况下也可以工作 - 它可能会发送不同的 cookie(来自不同的请求/服务器)。您应该看到一个 Set-Cookie: 具有来自 somewhere 的相同值。尝试清除所有 cookie 并重试。
-
@Kylar 感谢您的建议,一旦我清除了 cookie,它就无法与 firefox 插件一起使用,因为我收到了 502 错误,但在响应中我发现了 set-cookie 标头,它允许第二个要求工作得很好!
标签: cookies http-headers httprequest cloudflare