CookieContainer 错误?

2024-04-02

我很困惑 CookieContainer 如何处理域,所以我创建了这个测试。 此测试显示 cookieContainer 不会为“example.com”返回任何 cookie,但根据 RFC,它应该返回至少 2 个 cookie。

这不是一个错误吗?

如何让它发挥作用?

以下是关于此错误的讨论:

http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/c4edc965-2dc2-4724-8f08-68815cf1dce6 http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/c4edc965-2dc2-4724-8f08-68815cf1dce6

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Net" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    CookieContainer getContainer()
    {
        CookieContainer result = new CookieContainer();

        Uri uri = new Uri("http://sub.example.com");
        string cookieH = @"Test1=val; domain=sub.example.com; path=/";
        result.SetCookies(uri, cookieH);

        cookieH = @"Test2=val; domain=.example.com; path=/";
        result.SetCookies(uri, cookieH);

        cookieH = @"Test3=val; domain=example.com; path=/";
        result.SetCookies(uri, cookieH);

        return result;
    }

    void Test()
    {
        CookieContainer cookie = getContainer();
        lblResult.Text += "<br>Total cookies count: " + cookie.Count + " &nbsp;&nbsp; expected: 3";

        Uri uri = new Uri("http://sub.example.com");
        CookieCollection coll = cookie.GetCookies(uri);
        lblResult.Text += "<br>For " + uri + " Cookie count: " + coll.Count + " &nbsp;&nbsp; expected: 2";

        uri = new Uri("http://other.example.com");
        coll = cookie.GetCookies(uri);
        lblResult.Text += "<br>For " + uri + " Cookie count: " + coll.Count + " &nbsp;&nbsp; expected: 2";

        uri = new Uri("http://example.com");
        coll = cookie.GetCookies(uri);
        lblResult.Text += "<br>For " + uri + " Cookie count: " + coll.Count + " &nbsp;&nbsp; expected: 2";

    }

    protected void Page_Load(object sender, EventArgs e)
    {
        Test();
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>CookieContainer Test Page</title>
</head>
<body>
    <form id="frmTest" runat="server">
    <asp:Label ID="lblResult" EnableViewState="false" runat="server"></asp:Label>
    </form>
</body>
</html>

我刚刚找到了这个错误的修复并在这里讨论:http://dot-net-expertise.blogspot.com/2009/10/cookiecontainer-domain-handling-bug-fix.html http://dot-net-expertise.blogspot.com/2009/10/cookiecontainer-domain-handling-bug-fix.html

这是解决方案:

  1. 不要使用 .Add(Cookie),仅使用 .Add(Uri, Cookie) 方法。
  2. 每次向容器添加 cookie 时调用 BugFix_CookieDomain 或 在您使用 .GetCookie 之前或系统使用容器之前。

    private void BugFix_CookieDomain(CookieContainer cookieContainer)
    {
        System.Type _ContainerType = typeof(CookieContainer);
        Hashtable table = (Hashtable)_ContainerType.InvokeMember("m_domainTable",
                                   System.Reflection.BindingFlags.NonPublic |
                                   System.Reflection.BindingFlags.GetField |
                                   System.Reflection.BindingFlags.Instance,
                                   null,
                                   cookieContainer,
                                   new object[] { });
        ArrayList keys = new ArrayList(table.Keys);
        foreach (string keyObj in keys)
        {
            string key = (keyObj as string);
            if (key[0] == '.')
            {
                string newKey = key.Remove(0, 1);
                table[newKey] = table[keyObj];
            }
        }
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CookieContainer 错误? 的相关文章

  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • Angular2 APP_INITIALIZER 嵌套 http 请求

    我一直在尝试使用APP INITIALIZER在引导过程中加载一些配置数据 类似于如何将从后端渲染的参数传递给 angular2 bootstrap 方法 https stackoverflow com questions 37611549
  • 如何在 Chrome 中使用 Selenium + Python 绑定控制文件的下载

    在哪里可以找到描述可与 Selenium 和 Chrome Web 浏览器一起使用的选项的文档 我想在网络浏览器中打开链接 以获取凭据 但不想下载相应的文件 pdf 或 tiff 或 jpeg 我在 Windows 7 笔记本电脑上使用 P
  • Excon::Errors::Forbidden in UsersController#update

    我正在尝试使用 Carrierwave 将图像上传到 Amazon S3 以便为我的用户提供上传头像的机会 当我添加图像文件并单击 更新 时 收到以下错误消息 Excon Errors Forbidden in UsersControlle
  • 如何使用 javascript 控制 Sass 变量

    我有一个正在生成 CSS 文件的 Sass 文件 我在 sass 文件中使用了许多变量作为背景颜色 字体大小 现在我想通过 JavaScript 控制所有变量 例如 在 style sass 中我们有 bg 000 font size 12
  • 命令行中转换命令出错

    我有一个 bash shell 脚本 如下所示 bin bash SIZES 512 1024 2048 for i in SIZES do SIZE SIZES i echo SIZE first resize original imag
  • 我需要 SQLBulkcopy 的进度条

    我的应用程序需要进度条 我正在通过文本文件将数据上传到 SQL Server 但这需要很多时间 而且我也使用了后台工作程序 但这不能正常工作 所以我只需要知道是否有任何方法可以将进度条与 SQL Bulk Copy 一起使用它告诉我插入了
  • Python:如何让程序等待函数或方法完成

    程序经常需要等待函数完成其工作 有时恰恰相反 主程序不需要等待 我举了一个简单的例子 有四个按钮 单击每个将调用相同的calculate 函数 唯一的区别是函数的调用方式 直接打电话 使用队列 每个线程完成后将结果放入队列中 然后您只需读取
  • 我必须使用 SVN API 或库访问/提交/更新 WPF 应用程序中的 SVN 存储库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何可用于从 net 应用程序访问 SVN 的好库 使用 C 到目前为止我发现的唯一 3 个我会尝试的
  • 如何使用 easy_install 安装 django 旧版本?

    我刚刚因为 django 1 3 破坏了我的环境 我的网站都无法运行 因此 我决定使用 virtualenv 来设置不同 python 版本以及 django 的虚拟环境 但是 似乎如果我下载软件包并使用 sudo python setup
  • 阵列部件访问

    我试图更好地理解数组 请原谅我的基本问题 因为我三周前刚刚打开我的第一本 php 书 我知道您可以使用 foreach 或 for 循环 检索键 值对 如下所示 stockprices array Google gt 800 Apple g
  • II 错误:应用程序代码隐藏=“Global.asax.cs”继承=“nadeem.MvcApplication”

    我正在尝试部署我的网络项目 但不断收到此错误 Line 1 我看了这个帖子 解析器错误 应用程序中的服务器错误 https stackoverflow com questions 11596352 line 1 application co
  • MySQL Regexp 是否支持 Unicode 匹配

    有谁知道Mysql的正则表达式是否支持unicode 我一直在做一些研究 大多数博客等似乎都表明存在问题或不受支持 我想知道是否最好使用 LIKE 进行 unicode 模式匹配 使用 regexp 进行 ASCII 增强模式匹配 我喜欢能
  • 具有非正则截距项的 Scikit-learn 岭回归

    scikit learn 岭回归是否在正则化项中包含截距系数 如果是 是否有办法在不正则化截距的情况下运行岭回归 假设我拟合岭回归 from sklearn import linear model mymodel linear model
  • RxJS forkJoin 未完成

    当我订阅 getAllSubModules 时 forkJoin 会毫无错误地执行所有这些可观察值 但不会完成 我知道 forkJoin 仅在其所有可观察值完成后才完成 但作为证据 我在控制台中看到 3 次 这确认一切都成功 因此所有可观察
  • jqGrid 过滤器工具栏仅显示单列的搜索运算符选择器

    我有包含许多列的 jqGrid 表 使用过滤器工具栏在网格中进行搜索 对于大多数人来说 搜索只是简单的默认运算符 对于一个日期时间列 我需要不同类型的运算符和日期选择器选择器 我已经添加了dataInit日期选择器初始化为searchopt
  • 如何将最后 N 次提交压缩在一起?

    如何将最后 N 次提交压缩为一次提交 你可以很容易地做到这一点 无需git rebase or git merge squash 在此示例中 我们将压缩最后 3 个提交 如果您想从头开始编写新的提交消息 这就足够了 git reset so
  • java/oops 中静态变量和动态变量有什么区别?

    请有人告诉我 oops 或 java 中 静态变量 和 普通变量 之间的区别 如果可能的话 还有它们的用法 考虑一个具有静态和动态变量的类 动态变量 创建类的实例时 每个对象都有自己的动态变量副本 对于每个对象 该变量的值都将不同 无论在该
  • 使用 Jest 模拟 jsonwebtoken 模块

    我尝试用玩笑来模拟 npm 模块 jsonwebtoken 的验证功能 该函数返回一个已解码的令牌 但我想将此函数的自定义返回传递给我的单元测试 我明确请求在继续请求之前检查访问令牌的有效性 但我想模拟令牌检查的时刻以直接返回用户值 并且轻
  • 使用过滤器或挂钩修改购物车总量

    好吧 我正在尝试编写一个过滤器或挂钩 它将根据购物车中的商品总数来修改购物车的总量 例如 如果购物车中有三件商品 我想从总订单中扣除二十美元 下面是我到目前为止的代码 非常感谢任何帮助 add filter woocommerce cart
  • CookieContainer 错误?

    我很困惑 CookieContainer 如何处理域 所以我创建了这个测试 此测试显示 cookieContainer 不会为 example com 返回任何 cookie 但根据 RFC 它应该返回至少 2 个 cookie 这不是一个