WebBrowserコントロールを使用して認証のあるWebページを開いた後、
新しいウィンドウを開く場合に認証情報が保持されず再度認証要求されたり
アクセスが拒否されたりします。
認証情報を保持したままで新しいウィンドウ(IE)を開く方法はないでしょうか?
環境は、Windows2000でVB6.0です。
どなたか回答よろしくお願いします。
IEを使っている場合の事例なら心当たりがあります。
IE6SP1にパッチ KB867801 適用後、JavaScriptのwopen で開いた別ウィンドウにセッション Cookieが引き継がれなくないため認証エラーと判定される問題が発生しました。
恐らく、このパッチに含まれる「ナビゲーション メソッドのクロスドメインの脆弱性 CAN-2004-0549」への修正の影響で別ウィンドウを開く場合の処理が変わった影響と思われます。
ローカルネットワーク上のWebサーバなので該当サイトからのCookieを全て受け入れる設定にすることで回避しました。
補足と訂正です。
このセッションCookieですが、IEのプライバシー設定の影響を受けるので、その設定内容も確認が必要です。その事例ではプライバシー設定は中でした。
また、別ウィンドウを開くJavaScriptのコードは、
w =window.open("","mini","top=***以下サイズと位置の設定***");
w.document.location.href="同じサイトの別ページのアドレス";
とか、
wopen2("同じサイトの別ページ","title");
ですね。別ページはIEのセキュリティ設定で元のページと同じゾーンに含まれています。
れす、ありがとうございます。
この現象の原因が、WEBブラウザコントロールを持つアプリとは
別プロセスでIEを起動するために発生してしまうことはなんとなく分かるのですが...
認証情報やセッション情報(cookie?)を持つHTTPヘッダ情報をIEに共有させる方法があればいいのかな?とは思うのですが、そんな方法があるのかどうか分かりません。
IE自体が別プロセスで起動した(認証を通したブラウザ以外のIEを起動した)場合、認証情報は引き継がれない仕様と思います。
そもそも全然的外れな考え方をしているかも分かりませんし、恐らく不可能な事をやろうとしているっぽいのですが、実現可否の判断すらできない状態ですので、どなたかアドバイスをいただけないでしょうか?
ちなみにIEのバージョンは5.5SP2または6.0です。
もう一つ訂正です。wopen2()ですが、実体は
window.open() でした。
ということで、どちらも window.open の問題ですね。
認証情報を別アプリに引き継ぐ方法ですが、これはちょっとわかりません。
Microsoft HTML Object Library にはcookie関係のプロパティも見受けられるのですが、使い方を全然知らないので何ともいえません。
ツイート | ![]() |