【问题标题】:WebBrowser.Navigate overload doesn't add cookiesWebBrowser.Navigate 重载不添加 cookie
【发布时间】:2010-12-27 03:50:47
【问题描述】:

我正在尝试使用 C#,现在我正在尝试获取需要 cookie 的网页。由于我没有成功,我写了这个小的 PHP 脚本(直接来自 php.net):

<?php   
    foreach (getallheaders() as $name => $value) {
        echo "$name: $value\n";
    }
?>

但是,当我运行时:

this.WBro.Navigate("http://localhost/cookie.php", null,null,"Cookie: foo=bar");

foo cookie 不存在,我得到的只是一个显示“通常”标题的页面(cookie 除外)。有人知道为什么会这样吗?

非常感谢!

【问题讨论】:

    标签: c# cookies browser


    【解决方案1】:

    供将来参考:无法使用 WebBrowser.Navigate 设置 cookie。只需使用

    [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
    static extern bool InternetSetCookie(string lpszUrl, string lpszCookieName, string lpszCookieData);
    InternetSetCookie("http://localhost", "foo", "bar");
    

    【讨论】:

    • 这可能是错误的用法。你应该调用 InternetSetCookie("localhost", null, "foo=bar");
    【解决方案2】:

    在header后面加一个Environment.NewLine是否有效?

    【讨论】:

    • 如果这就是你的意思:this.WBro.Navigate("localhost/cookie.php", null, null, "Cookie: sid=1234" + System.Environment.NewLine);不,它不起作用
    • 它是否适用于其他自定义标题?像 X-Cookie:随便?
    • 是的,它适用于我设置的所有其他标头,Cookie 除外。也许这是一种“保护”?我什至在谷歌上都没有找到任何关于它的信息......
    • 也许问题是 (afaik) Cookie 标头必须是最后一个,但是当我使用导航方法设置标头时,它总是放在第一个...
    • 看到自 2001 年以来一切都没有改变,这并不令人欣慰 .. 但是,感谢您提供的信息 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多