0

私がやろうとしているのは、Web サイトにログインしてから POST 要求を行うことです。Webブラウザを作成し、そこにログインして、ボタンでPOSTデータを送信しようとしました。webbrowser1 経由で送信されていないため、または POST データを正しく送信していないため、このように機能していないかどうかはわかりません。POST データを送信するコードは次のとおりです。

           HttpWebRequest req = (HttpWebRequest)
        WebRequest.Create("url");
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        string postData = "postdata";
        req.ContentLength = postData.Length;

        StreamWriter stOut = new
        StreamWriter(req.GetRequestStream(),
        System.Text.Encoding.ASCII);
        stOut.Write(postData);
        stOut.Close();

また、あるボタンでログインしてから別のボタンでログインして、この POST データを送信しようとしましたが、問題は、POST リクエスト内に CSRF トークンが必要なことです。これが私がこれまでに持っていたものです。

            string formUrl = "loginurl"; 
        string formParams = string.Format("username={0}&password={1}&csrfmiddlewaretoken={2}", "user", "pass", "token");
        string cookieHeader;
        WebRequest req = WebRequest.Create(formUrl);
        req.ContentType = "application/x-www-form-urlencoded";
        req.Method = "POST";
        byte[] bytes = Encoding.ASCII.GetBytes(formParams);
        req.ContentLength = bytes.Length;
        using (Stream os = req.GetRequestStream())
        {
            os.Write(bytes, 0, bytes.Length);
        }
        WebResponse resp = req.GetResponse();
        cookieHeader = resp.Headers["Set-cookie"];

これを行う最良の方法は何ですか?ありがとうございました!

4

1 に答える 1

0

jquery の「ajax:before」イベントにバインドして、送信する前に CSRF トークンのパラメーターを透過的に追加することができます。CSRF トークンを追加する方法は、使用している Web フレームワークによって異なります。

于 2013-08-19T20:31:12.213 に答える