问题标签 [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.
.net - .NET System.Net.CookieContainer 线程安全吗?
- .NET 类 System.Net.CookieContainer 线程安全吗?--更新:交钥匙回答--
- 有什么方法可以确保在异步请求期间修改的变量(即 HttpWebRequest.CookieContainer)的线程安全性?
- 是否有任何属性可以突出线程安全类?--更新:如果 MSDN 上描述了线程安全,那么他们可能没有这个属性 --
- 所有 .NET 类都是线程安全的吗?--更新:马克回答了--
我问这些问题是因为我在多线程代码的异步请求中使用了 CookieContainer。而且我不能将异步请求放入锁中。也许我必须像在 F# 中那样使用只读“变量”(或不可变类型),对吧?
c# - 用同一个 CookieContainer 冲浪
您如何在为每个 Web 请求分配相同 CookieContainer 的网站上冲浪?
.net - httpwebrequest Cookie 容器
如何处理具有“/”以外路径的 cookie。HttpWebRequest 对象返回以下标头:
遍历 cookie 集合仅包含路径为“/”的 cookie。所以cookiecontainer里面只有cookie1和cookie4。
为什么其余的不被收集?如何使用“/”以外的路径访问 cookie?我可以将它们全部收集在一个容器中吗?
谢谢
asp.net - 重用 CookieContainer 时如何确定会话超时
我有以下代码,它重新使用在第一个请求时登录的 CookieContainer,但之后只使用 cookie 容器进行请求。
一段时间后,如果站点空闲,则会出现会话超时,我将需要再次执行登录。
问:我能否确定(使用 cookie 容器对象)是否发生超时,或者最好从 HttpWebResponse 中确定它是否发生,该 HttpWebResponse 恰好包含“会话超时”之类的文本。做这个的最好方式是什么?
然后这个方法调用容器:
c# - CookieContainer 错误?
我很困惑 CookieContainer 如何处理域,所以我创建了这个测试。这个测试表明 cookieContainer 没有为“example.com”返回任何 cookie,但根据 RFC,它应该返回至少 2 个 cookie。
这不是一个错误吗?
如何让它发挥作用?
以下是关于此错误的讨论:
http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/c4edc965-2dc2-4724-8f08-68815cf1dce6
c# - 使用 .net 的 (C#) System.Net.Cookie 处理 cookie 值中的逗号
我正在创建一个客户端来访问一个网站并自动登录 + 执行一些任务,但是他们最近将他们的 cookie 更新为(无论出于何种原因......)在他们的标识 cookie 中包含一个逗号。
因此,例如,Cookie 将具有类似于以下的值:
问题是,根据msdn,您不能在 cookie 的值中使用逗号或句点。我正在寻找的是一种绕过这个限制的方法,一种使.net 的 Cookie 与逗号一起工作的方法。我发现服务器确实向客户端发送了一个“SET-COOKIE”标头,我猜这就是正在解析的内容,但这似乎也显然给命令和分号赋予了特殊含义(因此限制.NET 本身内部的类)。
但是,诸如 IE、Firefox 等浏览器如何正确处理 cookie(正如他们显然所做的那样,因为该网站在我测试过的任何浏览器中都可以正常工作。)是否有办法强制执行此操作.NET 中的行为?
任何帮助将不胜感激,谢谢。
- - 编辑 - -
一些附加信息:
我的代码看起来像这样:
其中 cookieJar 在 Program.client 中定义为:
当我循环并打印出 CookieContainer 中的所有 cookie 时,我得到如下信息:(cookie,格式为:“name”->“value”)
问题的核心似乎是逗号和分号是 SET-COOKIE 标头字符串中的保留字符……但是浏览器如何处理呢?我可能自己可以解析字符串,但我不知道如何解决这种情况:(HTTP 标头,格式为:“name”->“value”)
如您所见, expires 部分寻找逗号而不是分号来区分自己与下一个变量。据我所知,它的格式是:
但如果这是真的,是否有一种优雅的方式来处理可能出现在其中一个值中的逗号?
c# - 向 Web 服务端口客户端添加 cookie
我在我的应用程序中使用了一个 Web 服务,它需要设置一个特定的 cookie 才能访问它的方法。
wsdl.exe
我正在为使用工具创建的服务使用生成的包装类。使用该方法一切正常。
现在我想使用服务参考而不是预先生成的类来做类似的事情。我添加了 Web 参考,但在生成的服务参考端口客户端中似乎没有CookieContainer
(或任何类似的东西)。
有谁知道如何向该客户端添加 cookie?
c# - 使用 HttpCookieCollection 和 CookieContainer 发送 cookie
我想通过从我的服务器到远程服务器的 HTTP 请求隧道,通过所有的 cookie。所以我创建了一个新HttpWebRequest
对象并想在其上设置 cookie。
HttpWebRequest.CookieContainer
是System.Net.CookieContainer
持有的类型System.Net.Cookies
。
在我传入的请求对象上:
HttpRequest.Cookies
是System.Web.HttpCookieCollection
持有的类型System.Web.HttpCookies
。
基本上我希望能够将它们分配给彼此,但是不同的类型使它成为不可能。我是否必须通过复制它们的值来转换它们,还是有更好的方法?
c# - 由于“您使用的浏览器拒绝 cookie”响应,使用 HttpWebRequest 登录 eBay 失败
我正在尝试使用以下代码登录我的 eBay 帐户:
显然替换了我的真实用户名和密码。当我查看字符串responseText
时,我看到来自 eBay 的部分响应是
您使用的浏览器拒绝 cookie。
任何想法我做错了什么?
PS 是的,我也在使用 eBay API,但这与我想用 API 做的事情略有不同。
c# - C#:将 CookieContainer 写入磁盘并重新加载以供使用
我CookieContainer
从名为CookieJar的 HttpWebRequest/HttpWebResponse 会话中提取了一个。我希望我的应用程序在运行之间存储 cookie,因此在CookieContainer
程序的一次运行中收集的 cookie 也将在下一次运行中使用。
我认为这样做的方法是以某种方式将 CookieContainer 的内容写入磁盘。我的问题是:
- 如何将 CookieContainer 写入磁盘?是否有内置功能,或者,如果没有,人们采取了哪些方法?是否有任何类可用于简化此操作?
- 将 CookieContainer 写入磁盘后,如何将其重新加载以供使用?
更新:第一个答案建议将. CookieContainer
但是,我对如何序列化和反序列化如此复杂的对象不是很熟悉。你能提供一些示例代码吗?建议是利用SOAPFormatter
.