2010年3月17日水曜日

SSLとjavascript(IEの警告ダイアログ対応)

作成してるWebサイトをSSLにしたとたん、以下のようなメッセージの警告ダイアログがやたら表示されたので、原因と対処方法まとめ。

「このページにはセキュリティで保護されている項目と保護されていない項目が含まれています。保護されていない項目を表示しますか?」


基本的には、httpのリクエストとhttpsのリクエストが混ざっているページで表示されるダイアログのはずなので、パケットモニタしてリクエストを見てみたが、「http:」で始まるリクエストは飛んでない。
ググってみると、どうもiframeのsrc属性が空の場合にも発生するようだ。 http://support.microsoft.com/kb/261188/ja

なんてこった、画面部品としていくつかsrc属性なしでiframeを使用しているわ。

IE6、7、8で試したが出るのはIE6のみ。
基本的にはインターネットオプションの「保護つき/保護なしサイト間を移動する場合に警告する」のチェックをはずせば問題ないのだけど、IE6のデフォルトはチェックあり。。

対応方法は、ダミーのhtml(空ファイル)を用意して、src属性に指定するだけです。
.htmlに対してservletが動作してしまう設定のときはdummy.htmとか適当に拡張子を変更すればOK.

よし、解決! と思っていたら今度は別Windowを使ってところで
以下の警告ダイアログが。。
「セキュリティで保護されたページに接続します」
セキュリティーで保護されていないページに移動しようとしています」

window.openのURLパラメータを指定していないとこが原因の模様。
window.openでURLパラメータに空を指定していると、SSL切断→SSL接続という
動きになりSSL開始と終了の警告ダイアログが表示されるみたい。

これも対応方法は、iframeと同様でダミーHTMLを指定することで解決。


2010/07/17追記
ちなみにiframeの方はsrc="javascript:false"みたいな書き方でもいけるが、
透明でレイヤーにしてるiframeとかの場合、falseって文字が出ちゃいますw
文字が出ちゃうとか関係ない用途なら こっちの方が リクエスト発生しない
のでパフォーマンス的によいね。
window.openの方はjavascript:falseは効果ありませんでした。






0 件のコメント:

コメントを投稿