Exemple #1
0
        private static NameValueCollection GetStsRequestHeaders(HttpResponse response)
        {
            NameValueCollection headers = new NameValueCollection();

            for (int i = 0; i < CommonHeaders.Count; i++)
            {
                headers.Add(CommonHeaders.GetKey(i), CommonHeaders.Get(i));
            }

            string cookieString = response.Headers["Set-Cookie"];

            if (String.IsNullOrEmpty(cookieString))
            {
                return(headers);
            }


            List <string> cookies = cookieString.Split(',').ToList();

            for (int i = 0; i < cookies.Count; i++)
            {
                if (cookies[i].IndexOf("expires=", StringComparison.OrdinalIgnoreCase) > 0)
                {
                    cookies[i] += cookies[i + 1];
                    cookies.Remove(cookies[i + 1]);
                }
            }

            string headerCookies = String.Empty;

            foreach (var piece in cookies)
            {
                if (piece.Contains("username="******".ASPXAUTH=") && piece.ToLower().IndexOf("path=/stshost") > 0))
                {
                    Cookie cookie = new Cookie();

                    foreach (var item in piece.Trim().Split(';'))
                    {
                        if (item.Trim() == "HttpOnly")
                        {
                            cookie.HttpOnly = true;
                        }
                        if (item.Contains("="))
                        {
                            string key   = item.Split('=')[0].Trim();
                            string value = item.Split('=')[1].Trim();

                            if (key.ToLower() == "path")
                            {
                                cookie.Path = value;
                            }
                            if (key.ToLower() != "expires" && key.ToLower() != "path")
                            {
                                cookie.Name  = key;
                                cookie.Value = value;
                            }
                        }
                    }

                    headerCookies += String.Format("{0}={1}; ", cookie.Name, HttpCommon.UrlEncode(cookie.Value));
                }
            }

            headers.Add("Cookie", headerCookies);

            return(headers);
        }