POSTを行うには?


tomo  2013-03-15 21:30:45  No: 44054  IP: 192.*.*.*

OnBeforeNavigate2についてお聞きします。

HTMLを動的追加を行うの続きなる形ですが、TWebBrowserでログイン画面を
表示し、ログインした際に、POST送信できていました。

OnBeforeNavigate2の処理を追加し、カスタムヘッダーを出力するように
修正をしております。

GETをした時には、問題ないのですが、ログイン画面にてID/PWを入力し
POST処理を行うとGETで遷移されてしまい、ログイン認証が取れません。

OnBeforeNavigate2内部で、POSTする内容がVariant Arrayになっている
こととかは、分かったのですが、GETをPOSTにする方法が分かりません。

皆さまのお知恵をお貸し頂けないでしょうか?

〜OnBeforeNavigate2に割り当てたコード(GET/POST関係なく全てGETでアクセスされる。)〜


procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  NewHeaders: OleVariant;
begin
  if (pDisp as IUnknown) = (WebBrowser1.ControlInterface as IUnknown) then
  begin
    if Pos('X-APP', Headers) <> 0 then Exit;

    Cancel := True;
    (pDisp as IWebBrowser2).Stop;

    NewHeaders := Headers + 'X-APP: APP'#13#10;

    (pDisp as IWebBrowser2).Navigate2(URL, Flags, TargetFrameName, PostData, NewHeaders);
  end;
end;



〜ログインフォーム〜
<form action="login.php" method="post">
ログインID<input type="text" name="login-id"><br />
パスワード<input type="password" name="password"><br />
<input type="submit" value="ログイン">
</form>

編集 削除
とも  2013-03-15 21:31:52  No: 44055  IP: 192.*.*.*

名前を「とも」ではなく「tomo」で投稿してしまいました。

編集 削除
Mr.XRAY  2013-03-21 05:22:03  No: 44056  IP: 192.*.*.*

前のスレッドで,セキュリティ関係についてのレスがありましたから,
それには触れません.それに,掲示板では,質問の内容についてのみレスする
というのが,暗黙の了解事項ですから.

本題ですが,文章の意図するところが理解できません.
少なくとも私には,例えば,

>POST処理を行うとGETで遷移されてしまい

意味不明です.

[遷移 - Wikipedia]
http://ja.wikipedia.org/wiki/%E9%81%B7%E7%A7%BB

[遷移とは : JavaA2Z]
http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000814.html

提示しているコードと,文章との関係も理解できません.
何日もレスがないのは,それなりに理由があると思いますよ.
それと,環境が書いていませんが.
「前のスレッドを探せば書いてあるから,探せ !!」
ということでしょうか ?

多分,見たとしても,読まないとは思いますが...
[第5章 質問はしてみたけれど・・・]
http://www.geocities.co.jp/siliconvalley/5656/#CHAPTER005

編集 削除
Mr.XRAY  2013-03-21 15:55:07  No: 44057  IP: 192.*.*.*

参考になるかどうか分かりませんが.

[GETメソッドとPOSTメソッド]
http://www.kanzaki.com/docs/html/htminfo32.html#get-post

編集 削除
take  2013-03-21 16:58:44  No: 44058  IP: 192.*.*.*

状況がわからない質問ですね・・・
HTTPサーバーとやりとりするHTTPクライアントをTWebBrowserで作っていて
これを自動ログインさせたい

ログインするときのBeforeNavigate2イベントを捕まえて
そのときのヘッダを書き換えてやれば
うまく通過するのではないかと思ったけど
うまくいきません
なのかな?

そうじゃなくてBeforeNavigate2イベント抜きで

TWebBrowserから

<form action="login.php" method="get">
で作ったフォームの送信ボタンはログインできて

<form action="login.php" method="post">
で作ったフォームの送信ボタンはログインできない

ってこと?

後者なら単なるHTTPの知識不足
前者なら必要性すら疑問

編集 削除
Mr.XRAY  2013-03-21 20:48:17  No: 44059  IP: 192.*.*.*

コードをみると,
PostData, Headers: OleVariant; の扱い方に関する内容にも受け取れますね.

編集 削除
Mr.XRAY  2013-03-23 07:52:36  No: 44060  IP: 192.*.*.*

ともさんへ.
もし,まだ問題解決を望むのであれぱ,別のスレッド,
つまり新たに質問し直すといいと思います.
その時,このスレッドへのリンクを書いておけば,参考になると思います.

編集 削除