问题标签 [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.
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 (我的测试网站和登录名/密码也应该工作)
和提琴手日志:
- http://1drv.ms/1qyAgGi — webbrowser (Chrome),它添加了这个 cookie
- http://1drv.ms/1kqsLDI — WebClient
- http://1drv.ms/1kqsC2Y — HttpClient
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 ("/") 字符。
所以对我来说这显然是一个错误......?
c# - 将 cookie 传递给 httpwebrequest
HttpWebRequest
是否可以在不使用属性的情况下将 cookie 传递给HttpWebRequest.CookieContainer
?
由于某些原因,我无权访问某些对象属性,包括HttpWebRequest.CookieContainer
. 我确实可以HttpWebRequest
上课和CookieContainer
上课。
c# - 如何从 cookieContainer HttpWebrequest 将网站加载到 Webbrowser
我尝试通过 Httprequest 登录网站并回复一些信息。我保存了 Cookie 响应。那么我怎么知道我登录成功了,我尝试通过 Cookie 加载带有新表单的网站,但它没有登录。所以你能帮我吗......这是我的代码:
登录代码:
而这个通过 Cookie 加载网站的代码返回
请帮助我。我尝试了很多,但我无法成功。
.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 对象会正确获取它们。
这个问题有解决方法吗?
c# - HttpWebResponse 错误处理多个 Set-Cookie 标头的值,这意味着 CookieContainer 不会存储所有预期的 cookie
我的 C# Windows 窗体程序需要与Set-Cookie
在 HTTP 响应中包含多个标头的服务器通信。
.NETHttpWebResponse
似乎将多个Set-Cookie
标头的内容连接成一个值 - 使最终值无效。这会导致在使用关联的CookieContainer
.
例子
HttpWebRequest
发起请求,服务器回复...
...andHttpWebResponse
的标头值(从 VS Debugger 复制)是:
HttpWebResponse
仅包含cookie1
inCookies
属性。
.NET Reflection on the original HttpWebRequest
's CookieContainer
to get all cookies ( https://stackoverflow.com/a/15991071 ) 也显示仅cookie1
被解析为对象并被cookie2
忽略。
Set-Cookie
有没有办法在不诉诸(显着)较低级别或更复杂的替代方案的情况下正确处理多个标题HttpWebResponse
?
c# - c# httpwebrequest POST 和 GET 方法(带有 cookieContainer) c#
我正在尝试登录 xbox 实时页面,但遇到了一些问题,不知道为什么,我想我正确设置了所有内容......这是我的代码
我真的很想得到任何帮助,或者任何信息,我在哪里可以找到一些关于 cookiecontainers、c# 中的 http 协议等的解释……因为这是我第一个使用 WebRequests 的程序,非常感谢你提前提供的帮助。
c# - 在 C# 中访问 CookieContainer() 的内容
好的,我已经认输了,转而求助于可能知情的人。我在网上搜索过,尝试了一些示例,但我离从我的 cookie 容器中提取数据还差得远。
当我调试我的代码时,我可以在以下位置看到我在变量上的条目/值:CookieContianer > Non public members > m_domainTable > {domain URI} > Value > list of entries
那里有一个名为 JSESSIONID 的条目。我想做的就是获得那个特定的条目,这样我就可以使用它的分配值。
任何人都可以阐明我如何轻松解决它吗?
非常感谢。
==== 我如何提出请求的示例(注意 RequestItem 是从另一个方法传入的):
c# - Properties.Settings.Default CookieContainer 重新启动,但为什么呢?
我有一个简单的 winform 应用程序。在第一次运行时,会运行一个登录屏幕,以便用户可以登录到一个网站。如果成功,则保存会话 cookie:
完成后,登录表单被隐藏并运行一个新的主表单。在这个主窗体中,cookiecontainer 被再次读取并保存:
奇迹般有效。会话 cookie 仍然在那里,一切都很好。之后,使用 cookie 向网站发出新请求,如下所示:
工作正常。请求完成并在字符串中找到特定的用户相关数据。
但是,我重新启动程序时发生了一些奇怪的事情。
在程序启动之前,运行此代码以通过查看 cookie 检查首次运行:
事实上,在第一次运行之后,Properties.Settings.Default.cookies
is not null
,所以主窗体开始于Program.cs
.
奇怪的是,这一次Properties.Settings.Default.cookies
返回一个 CookieContainer 对象……没有 cookie。
我不知道为什么,因为我的应用程序设置只保存在登录表单中,该表单仅在第一次运行时打开。有没有人有过 cookiecontainers 做这种奇怪的事情的经验?我是否必须检查我的代码中的某些内容?干杯。
c# - 这是 CookieContainer 错误吗?
我在做什么:
我正在开发一个“webscraper”(多线程),就是这样,哈哈。
我需要在从页面中提取数据之前提交一个表单,所以布局是这样的:
- 对 example.com/path/doc.jsp(我的数据)的 GET 请求。
- 检查确认表单是否存在于文档源中。如果是则继续步骤 3(我的数据不存在,需要先提交表单),否则返回(因为没有要提交的表单,我的数据在这里)。
- 对 example.com/path/sub/other.jsp 的 GET 请求(必要的键值)。
- 对 example.com/path/submit.jsp 的 POST 请求(发送值)。
- 检查 POST 请求的响应,如果正常则转到 6,否则返回 1。
- 对 example.com/path/doc.jsp 的 GET 请求(我的数据,再次。由于我提交了表单,现在我的数据将出现)。
一切正常,除非来自 POST 请求(第 4 步)的响应告诉我返回第 1 步。
问题:
表单中的值之一我需要从 cookie 中提取它,所以我使用该GetCookies()
函数,但是,就像我说的,如果响应告诉我返回第 1 步,则所有请求(GET 和 POST ) 之后缺少 cookie(并添加了奇怪的 cookie)。见下图:
- 第一个调用是对我的数据所在的 doc.jsp 的 GET 请求。
- 第二个调用是 other.jsp 请求,因为确认表单存在于 doc.jsp 源代码中。
- 第三次调用是当我提交所有值时。
- 第四个调用是再次对 doc.jsp 的 GET 请求,因为提交表单(第三个调用)的响应告诉我重复该过程。基本上,4º ~ 6º 调用与 1º ~ 3º 相同,但带有 cookie fu**ed。
我的代码:
主程序:
我的环境: