c#中HttpWebRequest对应302重定向为什么取不到 cookie

   在默认情况下HttpWebRequest 对象的AllowAutoRedirect 为true 所以是取不到它的cookie

要想获取cookie 只需要把 AllowAutoRedirect 设为false

  Stream GetResponse(string url, ref WebHeaderCollection headers, byte[] data, bool onlyHeader)
        {
            string ret = string.Empty;
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.AllowAutoRedirect = false;
            request.Method = "GET";
            //request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36";
            //request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
            if (url.ToLower().Trim().StartsWith("https"))
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                //request.KeepAlive = false;
                //request.ProtocolVersion = HttpVersion.Version10;
            }
            if (headers != null && headers.Count > 0)
            {
                foreach (string key in headers)
                {
                    request.Headers.Add(key, headers[key]);
                }

            }
            if (data != null && data.Length > 1)
            {
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }

            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            headers = new WebHeaderCollection();
            foreach (string key in response.Headers.Keys)
            {
                headers.Add(key, response.Headers[key]);
            }
            MemoryStream ms = new MemoryStream();
            if (!onlyHeader)
            {
                byte[] buffer = new byte[1024 * 1024];

                using (Stream sr = response.GetResponseStream())
                {
                    int len = sr.Read(buffer, 0, buffer.Length);
                    while (len > 0)
                    {
                        ms.Write(buffer, 0, len);
                        len = sr.Read(buffer, 0, buffer.Length);
                    }
                }
                ms.Seek(0, SeekOrigin.Begin);
            }
            response.Close();
            return ms;

        }
        private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            //直接确认,否则打不开        
            return true;
        }


 

你可能感兴趣的:(c#中HttpWebRequest对应302重定向为什么取不到 cookie)