1

在我的 C# 应用程序中,我正在使用 HTTPWebrequest 等浏览网站。在某个时候,我想在 WebBrowser 控件中显示网站。

当前的 Cookie 保存在 CookieContainer 中。

以下代码完美运行,所有 Cookie 均由浏览器在请求中发送。

CookieCollection cookies = ck.GetCookies(new Uri("http://www.abcde.de"));

foreach (Cookie c in cookies) {
  if (!InternetSetCookie("http://www.abcde.de", c.Name, c.Value))
    throw new Exception("Exception setting cookie: Win32 Error code=" 
    + Marshal.GetLastWin32Error());
  }

  /** Setting header_infos, POST-Data etc **/
  webBrowser1.Navigate(link, "_self", parameterbyte, header_infos.ToString());

但是当我从子域中检索 Cookie 时

CookieCollection cookies = ck.GetCookies(new Uri("http://ab.cde.de"));

IntersetSetCookie 函数引发异常,因为 URL 格式“ http://ab.cde.de ”无效。当我尝试“ http://www.cde.de ”或“ http://www.ab.cde.de ”时,我没有收到异常,但网站无法正确加载,因为浏览器只发送其中一个请求中有五个 cookie,我不知道为什么。

你知道我该如何解决这个问题吗?

4

1 回答 1

0

我认为出于安全原因,这种行为是故意的。子域上的站点可以托管在与主域上的站点完全不同的人管理的完全不同的服务器上。Cookie 可能包含敏感信息,因此 Web 浏览器会阻止将它们发送到另一个(子)域。

于 2012-04-19T20:50:21.013 回答