问题标签 [cookiecontainer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1477 浏览

c# - HttpWebrequest/WebClient/HttpClient/CookieContainer 错误?如果响应 Uri 不包含它的路径,则不添加 cookie

我试图使用 C# (WebClient/HttpWebRequest) 登录到我的 WordPress 管理面板。

我发送一个 POST 请求到/wp-login.php. 它以这样的 cookie 响应:

它还重定向到/wp-admin/Location: http://109.120.169.99/wordpress/wp-admin/

问题是第二个 cookie(带path=/wp-admin)没有添加到 CookieContainer,所以登录失败。

我查看了 HttpWebRequest 源代码和http://referencesource.microsoft.com/#System/net/System/Net/_CookieModule.cs (OnReceiveHeaders),发现它ResponseUri用于所有 cookie。

我尝试使用响应 uri 手动添加 cookie,但出现路径无效的异常。之后我发现这个答案CookieException with CookieContainer: The 'Path' part of the cookie is invalid:它说当添加到 CookieContainer 时 Uri 必须匹配来自 cookie 的路径。

我最终禁用了 AllowAutoRedict(手动处理)并手动添加了这些 cookie。

这是我的代码:

网络客户端:

我也尝试使用 .NET 4.5 HttpClient,但结果相同(我认为它也在下面使用 HttpWebRequest):

我做错了什么还是 HttpWebRequest/CookieContainer 中的错误?

如果有人想测试它,为了方便起见,这里是完整的源代码:https ://gist.github.com/AlexP11223/5c176972426605ee2112 (我的测试网站和登录名/密码也应该工作)

和提琴手日志:

0 投票
1 回答
318 浏览

c# - 严重的 CookieContainer 错误?

我在这里遗漏了什么还是 CookieContainer 中的错误?

我将 3 个 cookie 添加到容器中,然后为 2 个 url 调用 GetCookieHeader 函数:

问题是最后一个引发异常的断言,因为返回的标头只有“Cookie2 = 2”。我看不出有什么理由省略 Cookie1 cookie - 根据 RFC6265,它应该返回两个类似于上面第一个断言的 cookie,不是吗?

几点说明:

  • cookie 都在容器中,所以问题不是添加,而是 GetHeader 函数。

  • 添加 4、5 等 cookie 时,此行为保持不变:只有与最后添加的 cookie 匹配的路径才会包含基本路径的 cookie!

  • 当删除路径中的所有“a”并仅使用“/”、“/0/”和“/1/”作为 3 个 cookie 和“ http://test.com/1/list ”的路径时,行为会发生变化和断言网址中的“ http://test.com/0/list ”)。然后所有断言都会成功 - 我希望“a”具有相同的行为!

PS:让我从规范中添加相关部分:

如果至少满足以下条件之一,则请求路径路径匹配给定的 cookie 路径:

- cookie-path 和 request-path 是相同的。

- cookie-path 是 request-path 的前缀,cookie-path 的最后一个字符是 %x2F ("/")。

- cookie-path 是 request-path 的前缀,不包含在 cookie-path 中的 request-path 的第一个字符是 %x2F ("/") 字符。

所以对我来说这显然是一个错误......?

0 投票
1 回答
3970 浏览

c# - 将 cookie 传递给 httpwebrequest

HttpWebRequest是否可以在不使用属性的情况下将 cookie 传递给HttpWebRequest.CookieContainer

由于某些原因,我无权访问某些对象属性,包括HttpWebRequest.CookieContainer. 我确实可以HttpWebRequest上课和CookieContainer上课。

0 投票
1 回答
190 浏览

c# - 如何从 cookieContainer HttpWebrequest 将网站加载到 Webbrowser

我尝试通过 Httprequest 登录网站并回复一些信息。我保存了 Cookie 响应。那么我怎么知道我登录成功了,我尝试通过 Cookie 加载带有新表单的网站,但它没有登录。所以你能帮我吗......这是我的代码:

登录代码:

而这个通过 Cookie 加载网站的代码返回

请帮助我。我尝试了很多,但我无法成功。

0 投票
1 回答
239 浏览

.net - .NET 的 Cookie 解析器 (CookieContainer) 已损坏

当我HttpWebRequest在 .NET 中使用时,它的 CookieContainer 对象不包含其中包含,(逗号)的 cookie - 例如,如果 cookie 看起来像这样:

guest_id=v1%3A142425134212809164; Domain=.twitter.com; Path=/; Expires=Fri, 17-Feb-2017 09:22:22 UTC

请求的 CookieContainer 不会包含这个 cookie,因为它里面有一个逗号(在 Expires 参数中)。另一方面,当 cookie 中不包含逗号时,CookieContainer 对象会正确获取它们。

这个问题有解决方法吗?

0 投票
1 回答
1114 浏览

c# - HttpWebResponse 错误处理多个 Set-Cookie 标头的值,这意味着 CookieContainer 不会存储所有预期的 cookie

我的 C# Windows 窗体程序需要与Set-Cookie在 HTTP 响应中包含多个标头的服务器通信。

.NETHttpWebResponse似乎将多个Set-Cookie标头的内容连接成一个值 - 使最终值无效。这会导致在使用关联的CookieContainer.

例子

HttpWebRequest发起请求,服务器回复...

...andHttpWebResponse的标头值(从 VS Debugger 复制)是:

HttpWebResponse仅包含cookie1inCookies属性。

.NET Reflection on the original HttpWebRequest's CookieContainerto get all cookies ( https://stackoverflow.com/a/15991071 ) 也显示仅cookie1被解析为对象并被cookie2忽略。

Set-Cookie有没有办法在不诉诸(显着)较低级别或更复杂的替代方案的情况下正确处理多个标题HttpWebResponse

0 投票
1 回答
749 浏览

c# - c# httpwebrequest POST 和 GET 方法(带有 cookieContainer) c#

我正在尝试登录 xbox 实时页面,但遇到了一些问题,不知道为什么,我想我正确设置了所有内容......这是我的代码

我真的很想得到任何帮助,或者任何信息,我在哪里可以找到一些关于 cookiecontainers、c# 中的 http 协议等的解释……因为这是我第一个使用 WebRequests 的程序,非常感谢你提前提供的帮助。

0 投票
1 回答
931 浏览

c# - 在 C# 中访问 CookieContainer() 的内容

好的,我已经认输了,转而求助于可能知情的人。我在网上搜索过,尝试了一些示例,但我离从我的 cookie 容器中提取数据还差得远。

当我调试我的代码时,我可以在以下位置看到我在变量上的条目/值:CookieContianer > Non public members > m_domainTable > {domain URI} > Value > list of entries

那里有一个名为 JSESSIONID 的条目。我想做的就是获得那个特定的条目,这样我就可以使用它的分配值。

任何人都可以阐明我如何轻松解决它吗?

非常感谢。

==== 我如何提出请求的示例(注意 RequestItem 是从另一个方法传入的):

0 投票
0 回答
93 浏览

c# - Properties.Settings.Default CookieContainer 重新启动,但为什么呢?

我有一个简单的 winform 应用程序。在第一次运行时,会运行一个登录屏幕,以便用户可以登录到一个网站。如果成功,则保存会话 cookie:

完成后,登录表单被隐藏并运行一个新的主表单。在这个主窗体中,cookiecontainer 被再次读取并保存:

奇迹般有效。会话 cookie 仍然在那里,一切都很好。之后,使用 cookie 向网站发出新请求,如下所示:

工作正常。请求完成并在字符串中找到特定的用户相关数据。

但是,我重新启动程序时发生了一些奇怪的事情。

在程序启动之前,运行此代码以通过查看 cookie 检查首次运行:

事实上,在第一次运行之后,Properties.Settings.Default.cookiesis not null,所以主窗体开始于Program.cs.

奇怪的是,这一次Properties.Settings.Default.cookies返回一个 CookieContainer 对象……没有 cookie

我不知道为什么,因为我的应用程序设置只保存在登录表单中,该表单仅在第一次运行时打开。有没有人有过 cookiecontainers 做这种奇怪的事情的经验?我是否必须检查我的代码中的某些内容?干杯。

0 投票
1 回答
155 浏览

c# - 这是 CookieContainer 错误吗?

我在做什么:
我正在开发一个“webscraper”(多线程),就是这样,哈哈。
我需要在从页面中提取数据之前提交一个表单,所以布局是这样的:

  1. 对 example.com/path/doc.jsp(我的数据)的 GET 请求。
  2. 检查确认表单是否存在于文档源中。如果是则继续步骤 3(我的数据不存在,需要先提交表单),否则返回(因为没有要提交的表单,我的数据在这里)。
  3. 对 example.com/path/sub/other.jsp 的 GET 请求(必要的键值)。
  4. 对 example.com/path/submit.jsp 的 POST 请求(发送值)。
  5. 检查 POST 请求的响应,如果正常则转到 6,否则返回 1。
  6. 对 example.com/path/doc.jsp 的 GET 请求(我的数据,再次。由于我提交了表单,现在我的数据将出现)。

一切正常,除非来自 POST 请求(第 4 步)的响应告诉我返回第 1 步。

问题:
表单中的值之一我需要从 cookie 中提取它,所以我使用该GetCookies()函数,但是,就像我说的,如果响应告诉我返回第 1 步,则所有请求(GET 和 POST ) 之后缺少 cookie(并添加了奇怪的 cookie)。见下图:

Cookie 错误
图片说明:

  • 第一个调用是对我的数据所在的 doc.jsp 的 GET 请求。
  • 第二个调用是 other.jsp 请求,因为确认表单存在于 doc.jsp 源代码中。
  • 第三次调用是当我提交所有值时。
  • 第四个调用是再次对 doc.jsp 的 GET 请求,因为提交表单(第三个调用)的响应告诉我重复该过程。基本上,4º ~ 6º 调用与 1º ~ 3º 相同,但带有 cookie fu**ed。


我的代码:


主程序:


我的环境:

  • 使用 Visual Studio 专业版 2013。
  • 目标框架是 .NET Framework 4.5。
  • 平台 x86(调试)。
  • WebClientEx 是 WebClient 的扩展版本,用于处理 cookie。在这里获取它PasteBin。我试图实现BugFix_CookieDomain()(来自这个问题),但即使有这个修复,这个问题仍然存在。
  • 我所有的网址都包含 http:// 前缀。

  • 使用 Fiddler 查看请求信息。

  • 英语不是我的母语...'-'