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>
名前を「とも」ではなく「tomo」で投稿してしまいました。
前のスレッドで,セキュリティ関係についてのレスがありましたから,
それには触れません.それに,掲示板では,質問の内容についてのみレスする
というのが,暗黙の了解事項ですから.
本題ですが,文章の意図するところが理解できません.
少なくとも私には,例えば,
>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
参考になるかどうか分かりませんが.
[GETメソッドとPOSTメソッド]
http://www.kanzaki.com/docs/html/htminfo32.html#get-post
状況がわからない質問ですね・・・
HTTPサーバーとやりとりするHTTPクライアントをTWebBrowserで作っていて
これを自動ログインさせたい
ログインするときのBeforeNavigate2イベントを捕まえて
そのときのヘッダを書き換えてやれば
うまく通過するのではないかと思ったけど
うまくいきません
なのかな?
そうじゃなくてBeforeNavigate2イベント抜きで
TWebBrowserから
<form action="login.php" method="get">
で作ったフォームの送信ボタンはログインできて
<form action="login.php" method="post">
で作ったフォームの送信ボタンはログインできない
ってこと?
後者なら単なるHTTPの知識不足
前者なら必要性すら疑問
コードをみると,
PostData, Headers: OleVariant; の扱い方に関する内容にも受け取れますね.
ともさんへ.
もし,まだ問題解決を望むのであれぱ,別のスレッド,
つまり新たに質問し直すといいと思います.
その時,このスレッドへのリンクを書いておけば,参考になると思います.
ツイート | ![]() |