void ICookieProvider.SetCookie(Url url, String value) { var host = CanonicalDomain(url.HostName); var parser = new CookieParser(value); var cookies = parser.Parse(); foreach (var cookie in cookies) { if (!String.IsNullOrEmpty(cookie.Domain)) { var cdom = cookie.CanonicalDomain; var suffix = GetPublicSuffix(cdom); if (suffix == null || !DomainMatch(host, cdom, false)) { continue; } // don't reset if already set if (!cookie.IsHostOnly.HasValue) { cookie.IsHostOnly = false; } } else { cookie.Domain = host; cookie.IsHostOnly = true; } if (String.IsNullOrEmpty(cookie.Path) || cookie.Path[0] != '/') { cookie.Path = GetDefaultPath($"/{url.Path}"); } AddCookie(cookie); } }
/// <summary> /// Parses the provided string to produce a new web cookie. /// </summary> /// <param name="value">The value to parse.</param> /// <param name="loose">Optionally makes parsing less strict.</param> /// <returns>The created web cookie.</returns> public static WebCookie FromString(String value, Boolean loose = false) => CookieParser.ParseSingle(value, loose);