Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 /// <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);