问题标签 [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 投票
3 回答
28755 浏览

powershell - powershell httpwebrequest GET方法cookiecontainer问题?

我正在尝试抓取具有用户身份验证的网站。我可以做一个 POST 来发送我的登录信息并存储一个 cookie。但是,登录后我在尝试访问受保护的页面时收到 403 错误。

变通方法:所以在尝试了几乎所有东西之后,我最终尝试了一些不同的东西并且它确实有效。

发布登录信息并获取会话 cookie 后,我使用 webclient 通过将 cookie 字符串添加到标题中来访问安全页面。

一个很酷的事情是 webclient 保存了 cookie。要访问另一个安全页面,您只需调用 $web.downloadstring("https://another_secure_url") :)

0 投票
1 回答
1577 浏览

c# - 并非所有 cookie 都使用 cookiecontainer 保存

我正在使用 Visual Studio 2010 和 .NET Framework 4.0。

代码:

问题是 CookieContainer 不包含所有 cookie。Firefox 中有 5 个 cookie,但 CookieContainer 只检索到 3 个。我需要始终登录所有 cookie。我认为像 .domain.com 这样的域存在问题。帮我!

0 投票
1 回答
1153 浏览

c# - 为什么少了一块饼干?

我正在废弃一个重定向结果的页面:我首先访问 page1,然后它通过http-equiv="refresh". 我正在报废第 2 页。page2 上的内容基于一些 cookie page1 集。我看到 page1 返回 2 个 cookie,但是当我请求第 2 页(发送相同的CookieContainercookie 时,缺少一个 cookie。我的代码有什么问题?

谢谢:

首先:我为page1创建一个CookieContainer和一个HttpWebRequest请求。

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(eQuery);
req.AllowAutoRedirect = true; // but it doesn't autoredirects the meta-refresh
req.CookieContainer = cookiesContainer;

这是我从访问 page1 得到的结果

HTTP/1.1 200 OK
Date: Tue, 12 Apr 2011 19:14:06 GMT
Server: (...)
Set-Cookie: NAME1=VALUE1; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: NAME2=VALUE2; expires=Wed, 13-Apr-2011 19:14:06 GMT
Content-Length: 174
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
(...)

到目前为止一切都很好,我得到了两个 cookie,我在容器中得到了两个 cookie 对象。

meta http-equiv然后我解析下一个 url的“内容”值。并使用类似的代码并使用相同的容器请求它。但是只发送了一个cookie。这是发送的 HTTP:

GET DETECTED_URL_IN_HTTP_EQUIV_REFRESH HTTP/1.1
User-Agent: (...)
Host: example.com
Cookie: NAME1=VALUE1

如您所见,cookie NAME2 丢失了。为什么会这样?两个 cookie 中是否存在相关差异(一个有路径,另一个有过期日期)?知道如何通过这两个 cookie 吗?

PS:我无权访问 page1,因此无法设置路径或 cookie 的过期时间。我正在报废那些页面。

谢谢你。

0 投票
2 回答
538 浏览

php - 无法将 cookie 从 vb.net 页面发送到 php 后端

我正在尝试为跨域 AJAX POST 查询创建代理,为此,我需要将客户端(浏览器)请求中的 cookie 添加到我发送到 PHP 后端的 POST 请求中,这是使用 HttpWebRequest。为此,我将每个 Request.Cookie 添加到 HttpWebRequest.CookieContainer 对象中。出于某种原因,我添加到其中的任何 cookie 都没有到达我的 PHP 后端。

我从一些搜索中了解到 CookieContainer 对象是依赖于 URI 的(我什至不知道如何解释它!),所以也许这就是我的问题的原因。但是,我尝试将我的 cookie 上的域设置为不同的东西,它似乎并没有影响它。因此,URI 的含义可能与 Cookie 的域参数不同。如果是这样的话,我就卡住了。

如果存在替代解决方案,我完全赞成(如果有一种方法可以在不需要插件的情况下在 asp.net 中进行自动跨域代理,那将挽救我的生命!)。

这是我正在使用的代码。

0 投票
1 回答
1749 浏览

c# - 在响应 Set-Cookie C# .NET 2.0-4.0 中指定版本时 CookieContainer 对象中的意外行为

我正在编写一个应用程序来登录 live.com。我已经使用 WebBrowser 控件成功地实现了这一点,但我现在正尝试使用无头浏览器来实现这一点。我只会使用 SimpleBrowser,但我需要 JavaScript 支持。所以我试图通过扩展 WebClient 类来支持 cookie 来做到这一点。我最初认为这是我的问题,但我使用 HttpWebRequest 和 HttpWebResponse 对象做了一个简单的测试用例,以查看我的 cookie 的外观,并且得到了相同的结果。

该问题似乎是由于 live.com 的 Set-Cookie 响应标头中传递了“version=1”。对于我的测试用例,我对 twitter.com 和 login.live.com 运行了相同的代码。

输出:

如果我查看相应 URL 的响应标头中的“Set-Cookie”值,这就是我所看到的(从 Fiddler 中获取):

所以 login.live.com 只抓取其中一个 cookie,然后分别存储版本和路径。twitter.com 请求按预期工作(不确定为什么发送了重复的 auth_token,但 CookieContainer 处理得很好)。

这是预期的行为吗?似乎 IE、Firefox 和 Chrome 只是忽略了“version=1”(从我在 Fiddler 中可以看出)。我可以在我的自定义 WebClient 类中覆盖 GetWebResponse 方法,以从响应标头的“Set-Cookie”值中删除“version=1”,但我希望有一个更明显的解决方案我缺少。这可能不是错误“版本= 1”,但除了我的两个测试用例之间的差异之外,我没有看到任何其他显着差异。

谢谢,
亚伦雷

0 投票
2 回答
2112 浏览

c# - Windows Phone 7 Mango 保存 CookieContainer 的状态

update1:​​经过更多研究,我不确定这是否可行,我在修复它时创建了一个 UserVoice 条目

我正在尝试在应用程序退出或发生墓碑时保存 CookieContainer,但我遇到了一些问题。

我试图将 CookieContainer 保存在 AppSettings 中,但加载后,cookies 消失了

在做了更多研究之后,似乎解决办法是从容器中取出饼干并以另一种方式保存它们。这工作得很好,直到我遇到另一个障碍。我无法使用 .mydomain.com 的 Uri 获取 Cookie。我相信这是因为这个错误。我可以在域表中看到 cookie .mydomain.com 但 GetCookies 不适用于该特定 cookie。

该错误再次发布在这里

当域以 . 开头时,从容器中获取 cookie 也存在问题:

我找到了一种解决方法,使用反射来迭代域表并删除“。” 字首。

只有在调用 InvokeMember 时,才会在 SL 中引发 MethodAccessException。这并不能真正解决我的问题,因为我需要保留的 cookie 之一是 HttpOnly,这是 CookieContainer 的原因之一。

如果服务器发送 HTTPOnly cookie,您应该在请求上创建一个 System.Net.CookieContainer 来保存 cookie,尽管您将看不到或无法访问存储在容器中的 cookie。

那么,有什么想法吗?我错过了一些简单的东西吗?是否有另一种方法来保存 CookieContainer 的状态,或者我是否需要保存用户信息,包括密码,并在每次应用程序启动和从墓碑恢复时重新验证他们的身份?

0 投票
2 回答
2713 浏览

windows-phone-7.1 - 在 Windows Phone 7 (Mango) 上的 HttpWebRequests 之间共享 CookieContainer 的问题

我有一个通过 HttpWebRequest 进行两次调用的生产应用程序。第一次调用设置会话并接收 cookie 以维持会话,第二次调用是从 api 获取数据。响应是httponly。我在两个调用之间使用了一个共享的 CookieContainer,但是第二个调用总是失败。我将问题缩小到没有在第二个请求中发送的 cookie。我已经使用网络监视器来监视流量,如果我在第二个请求中明确设置了 cookie(请参见下面的代码),则调用成功。有人对这个问题有任何想法吗?我需要弄清楚如何让它与共享的 CookieContainer 一起工作。

}

0 投票
1 回答
969 浏览

.net - Visual Studio 2008/2010 Web 服务中的“CookieContainer”去了哪里?(WCF 中的会话 cookie 持久性)

这似乎是一个非常简单的问题,但在这里和网络上进行了几个小时的研究后,我开始认为我可能问错了问题或做错了什么。

无论如何,我有一个用于登录的 Web 服务,一旦成功,就会返回一个标头 cookie,随后使用此 cookie 对其他服务的调用将被视为经过身份验证。这可能不是最安全或最佳的做法,但这是我拥有的服务

在 Java 中,我只是从成功登录的响应中获取 cookie 并传递给其他调用

例如(我知道,有些调用已被弃用,Axis 1 完全被弃用,但请发挥你的想象力)

(来自这里的原始示例)

至于它可能是旧的、不正确的或不安全的(是吗?),我仍然想在 .NET 中做同样的事情

我看到了关于 CookieContainer 的评论,但我的服务(由 VS Express 2010 自动生成)没有这样的属性......

从一个服务调用获取 cookie 并传递给另一个服务调用的等效方法是什么(以模拟浏览器自动执行的某些会话持久性)

(如果可能,我仍然想使用简单的“添加服务引用”自动生成的 Web .NET 服务客户端)

0 投票
1 回答
2376 浏览

c# - Cookie 容器未绑定 Set-Cookie 响应标头

好的,问题是我有以下代码:

所以resp.CookieContainerandresp.Cookies是空的,但resp.Headers["set-cookie"]包含相应的 cookie:

如果我错误地认为resp.CookieContainer应该包含上面列出的适当 cookie?

多谢你们!


更新

我还尝试了问题CookieContainer bug?中列出的 cookie 容器 bug 修复代码?但它也没有给出有效的结果,因为它应该在系统使用之前被调用,CookieContainer但在那一刻它是空的。

0 投票
0 回答
558 浏览

c# - CookieContainer.GetCookies(Uri uri) 上的 ArgumentOutOfRangeException

尝试获取给定站点的 cookie 时,我遇到了这个奇怪的异常。该CookieContainer对象是单例类的成员,因此应用程序中的每个 HttpWebRrequest 都可以访问站点的身份验证 cookie。

完整课程可在http://pastebin.com/QaDSs2g5获得。
第一次调用GetCookiesthrows aArgumentOutOfRangeException并带有以下堆栈跟踪:

中导致此异常的参数DateTime.Addvalue,即null

但是第二次调用完美无缺,然后我就可以找到我想要的 cookie 并且它的价值。所以我的代码有效,但我觉得它很难看,我很好奇为什么它第一次失败。任何想法,有人?