お世話になります。
WebBrowserコンポーネントを利用していますが、ページ中のリンクから新しいウィンドウが開かれたときに(IEのウィンドウ)、クッキー情報が引き継がれません。何か解決策はありませんか?
自分のPC上にWebサーバを設置している場合については経験があります。
にアクセスしていると新しいウィンドウに引き継がれない場合があります。
Windows Update のパッチの影響があるみたいですが詳細は不明です。
とりあえず、
として、イントラネットゾーンのWebサーバとして認識させることで回避しています。
私の場合はちょっと違うようです。試しにYahooページをWebBrowserコンポーネントを貼り付けたVBフォームで表示してYahooにログインし、その状態で新しいウィンドウが開くとログインしていない状態になってしまいます。通常のIEで表示の場合はこんなことはないのですが...。
もしかして、新しいウィンドウを、規定の動作(IEが起動される)のままにしていませんか?
もしそうだとしたら、同一プロセス内で開かせる(ppDispに対して、自アプリ内の別のWebBrowserを割り当てる)ようにすると、セッションクッキーを引き継いでくれるかも知れませんよ。
時間がかかりましたが、ppDispに対して自アプリを指定するとクッキーが引き継がれました。
自アプリ間では引き継がれるようです。
しかし、目的はIEへの引継ぎなので、IEで起動する場合に引き継がれるようにしたいのですが方法はありますか?
アウトプロセスにてセッションクッキーを引き継ぐことは
できないように思えます。セキュリティホールになりかねないので。
無理に引き継ぐなら、WinSock等でローカルプロキシをたてて、
送受信時のCookieヘッダを書き換えれば、擬似的に引き継げるかも
しれませんが、これも、SSLを使用されるとどうしようもないかと。
処理が変わってしまいますが、WebBrowserオブジェクトを使わず、
最初から InternetExplorerオブジェクトで処理しては如何でしょう?
# InternetExplorerをWebBrowserのように見せかけるのは、
# 苦労するかも知れませんが…。
いろいろご助言ありがとうございます。現在業務画面でWebBrowserを利用しているので、新規画面にもWebBrowserを使ってみるようにします。
業務画面にInternetExplorerが貼り付けられれば良かったのですがそんな方法はないですもんね。
ツイート | ![]() |