2017-03-05 10 views
2

POSTメソッドを使用して自動的にWebサイトにログインしようとしていますが、HttpWebResponseメソッドがHttpOnlyとしてマークされたCookieを簡単にスキップする点を除いて、私はそれを読むことができる方法はありますか?HttpWebResponseでHttpOnly Cookieにアクセスする必要があります

public CookieContainer _cookies = new CookieContainer(); 

コードで私はCookieContainerを使用しているとき、私は、彼らがアトミックに処理されるようHttpOnlyのクッキーを読んで心配してはならないことを読んだ

request.CookieContainer = _cookies; 

を持ってダウン。しかし、明らかにこれはそうではありません。私は4つのクッキーを得るが、response.Cookiesのサイズが3の場合、同じコードを使用して次のリクエストが拒否されることを確認します。助けてください!!

foreach (System.Net.Cookie cookie in response.Cookies) 
{ 
    Console.WriteLine("Cookie:"); 
    Console.WriteLine(cookie.HttpOnly); 

    _cookies.Add(new Uri(response.ResponseUri.GetLeftPart(UriPartial.Authority)), cookie); 

}

+0

あなたは 'HttpWebResponse'であなたの完全なコードを表示することができます –

答えて

0

クッキーHttpOnlyページスクリプトまたは他の活性 コンテンツこれをアクセスできるかどうかを次のように

HttpWebRequest request = CreateRequest(uri); 
request.Method = "POST"; 
request.GetRequestStream().Write(data, 0, data.Length); 
HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 
return DecodeResponse(response); 

DecodeResponse作品次のよう

完全なコードでありますクッキー。クッキーはHttpOnly属性を持っており、クライアント側のスクリプトを介してアクセスすることができない場合

以下のコードは、trueを返します。それ以外の場合はfalseです。

var _cookies = new CookieContainer(); 
    var request = (HttpWebRequest)WebRequest.Create("http://yourURL.com"); 
    request.CookieContainer = _cookies; 
    HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
    foreach (Cookie cook in response.Cookies) 
    { 
     Console.WriteLine("Cookie:"); 
     Console.WriteLine(cook.HttpOnly); 
    } 
+0

残念ながら、これは動作しませんでした。それは3偽を出力します。実際には、それは3つの偽と1つの真を印刷すべきです。何とかコードにHTTPOnly Cookieが表示されません。サンプルコードでこの提案を追加しました。 – Abdul

関連する問題