none
AsyncFileUploadコントロールでのHTTPSについて RRS feed

  • 質問

  • [ASP.NET AJAX]AsyncFileUploadコントロールを使用してファイルをアップロードするWEB画面を作成しています。
    HTTPでのテストでは問題はないのですが、HTTPSにすると
    「このページにはセキュリティで保護されている項目と保護されていない項目が含まれます。保護されていない項目を表示しますか?」の
    メッセージボックスが表示されます。

    メッセージボックスで「はい」、「いいえ」の選択が可能で「いいえ」を選択したとしてもファイルは正常にアップロードすることは可能です。
    しかし、なぜこのメッセージボックスが表示されるかがわかりません。
    ASPXにAsyncFileUploadコントロールだけ配置した場合でも同様の現象が発生します。

    (UploadedCompleteが呼び出された時点でメッセージが表示されているようです。)

    すみませんが何が問題なのか教えて下さい。


    WEBの環境、開発環境は以下の通りです。
    ・IIS:IIS7.0
    ・AP Server : Windows2008 Server
    ・DB Server : SQL Server2008
    ・IE : IE6.0 + SP3
    ・Visual Studio 2008(C#)

    よろしくお願い致します。

    2011年11月13日 13:33

回答

  • AsyncFileUpload Demonstrationでも発生するのなら、AsyncFileUploadの仕様ということでしょう。

    ソースコードのAsyncFileUpload.pre.jsを見てみたところ、バックグラウンドでアップロードを行うための手段としてiframeを使用してabout:blankページを開いています。これによりKB261188の問題が発生してしまっているのではないでしょうか?

    この手の処理を行う際にiframeを使うのはよくあることで、その際、about:blankでは今回のような問題が発生してしまうため、フレームワーク側でblank.htmlを持たせておくのが常套手段かと思っていましたが、そのようになっていないのですね。
    # ちなみにThe dojo toolkitの場合、dojo/resources/blank.htmlが用意されていたりするんですが。類似でblank.gifとかも。

    • 回答の候補に設定 山本春海 2011年11月25日 9:03
    • 回答としてマーク 山本春海 2011年11月28日 8:40
    2011年11月14日 6:47
  • 佐祐理さんがおっしゃっているように、AjaxControlToolkitのソースに手を入れて、CodePlexで変更を取り込んでもらうのが一番確実ですが、Javascript側の修正で行けそうなら、こんな方法もあると思います。

    AjaxControlToolkit の CalendarExtender のカレンダーを日本語表記にする

    http://devadjust.exblog.jp/7018028/

    • 回答の候補に設定 山本春海 2011年11月25日 9:04
    • 回答としてマーク 山本春海 2011年11月28日 8:40
    2011年11月15日 3:47
  • 代入すれば再定義されます。
    <script type="text/javascript">
    // <![CDATA[
    Sys.Extended.UI.AsyncFileUpload.prototype._onchange = function(){
      ...;
    };
    // ]]>
    </script>
    
    

    • 回答の候補に設定 山本春海 2011年11月25日 9:04
    • 回答としてマーク 山本春海 2011年11月28日 8:40
    2011年11月16日 0:41
  • みなさんのおかげで何とか対応することが出来ました。

    大変ありがとうございました。

    助かりました。

    • 回答としてマーク inoki123 2011年11月27日 13:32
    2011年11月27日 13:31

すべての返信

  • 同一内容のようなので相互にリンクしておきます。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=62958
    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年11月13日 15:11
  • 煮詰まっていましたので同じ質問を2箇所にしてしまいました。

    リンクありがとうございます。

    ご存知の方、引き続きよろしくお願い致します。

    • 編集済み inoki123 2011年11月14日 1:39
    2011年11月14日 0:18
  • IE トラブル

     以下リンク先から引用します。

    -- 引用ここから

    ページ自体が「https:/」から始まるため、内包されている画像やメニュー項目なども全て「https:/」から始まっている必要がある。だが、画像やメニューが「http:/」から始まるフルパスのURLで記述されている場合、SSLページでもSSL経由ではない画像やメニューを呼び出すことになる。要するにこのページは「http」と「https」の両方を利用したページということになる。

    この時に先ほどの、「このページにはセキュリティで保護されている項目と保護されていない項目が含まれています。保護されていない項目を表示しますか?」という内容の「セキュリティ」に関する警告メッセージが頻繁に表示される。

    -- 引用ここまで


    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/
    2011年11月14日 3:03
  • J.Hashimoto さん

    回答ありがとうございます。

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

    一般的にHTTPからイメージファイルやスタイルシートのファイルをリンクしている時に表示されることは理解しております。

    但し、今回はまっさらな画面(まっさらなアプリケーション)で[ASP.NET AJAX]AsyncFileUploadコントロールを使用した場合にもメッセージが表示されれます。

    (イメージファイルやスタイルシートは意図的に参照しておりません。)

    [ASP.NET AJAX]AsyncFileUploadコントロール側に何かあるのではないかと思っているのですが...。

    お気づきの点がありましたらご連絡下さい。

    よろしくお願い致します。

    2011年11月14日 5:54
  • AsyncFileUpload Demonstrationでも発生するのなら、AsyncFileUploadの仕様ということでしょう。

    ソースコードのAsyncFileUpload.pre.jsを見てみたところ、バックグラウンドでアップロードを行うための手段としてiframeを使用してabout:blankページを開いています。これによりKB261188の問題が発生してしまっているのではないでしょうか?

    この手の処理を行う際にiframeを使うのはよくあることで、その際、about:blankでは今回のような問題が発生してしまうため、フレームワーク側でblank.htmlを持たせておくのが常套手段かと思っていましたが、そのようになっていないのですね。
    # ちなみにThe dojo toolkitの場合、dojo/resources/blank.htmlが用意されていたりするんですが。類似でblank.gifとかも。

    • 回答の候補に設定 山本春海 2011年11月25日 9:03
    • 回答としてマーク 山本春海 2011年11月28日 8:40
    2011年11月14日 6:47
  • 佐祐理さん

    回答ありがとうございます。

    指摘頂いたソースコードを確認すると確かにiframeを使用していますのでKB261188の問題の可能性が高いですね。

    修正方法ですが「AsyncFileUpload.pre.js」を直接修正できればよいのですがAsyncFileUploadはdllで提供されている為

    修正することは難しいと考えています。

    何か良い修正方法がありますでしょうか?

    それとも仕様なのであきらめるしかないのでしょうか?

    すみませんが良い案がありましたら教えて下さい。

    よろしくお願い致します。

     

    2011年11月14日 10:16
  • ソースコードも公開されていますから、修正されるのであれば、ご自身でコンパイルすればいいのでは?
    2011年11月14日 13:06
  • 佐祐理さんがおっしゃっているように、AjaxControlToolkitのソースに手を入れて、CodePlexで変更を取り込んでもらうのが一番確実ですが、Javascript側の修正で行けそうなら、こんな方法もあると思います。

    AjaxControlToolkit の CalendarExtender のカレンダーを日本語表記にする

    http://devadjust.exblog.jp/7018028/

    • 回答の候補に設定 山本春海 2011年11月25日 9:04
    • 回答としてマーク 山本春海 2011年11月28日 8:40
    2011年11月15日 3:47
  • まぁ Sys.Extended.UI.AsyncFileUpload.prototype._onchange を希望する内容で再定義するだけで置き換えられますね。

    ASP.NETというよりも純粋なJavaScriptの話ですね。

    2011年11月15日 4:19
  • かるあさん

    回答ありがとうございます。

    こんなやり方もあるのですね。

    ソースの修正しか対応は難しいと思っていましたので参考になります。(あまりソースに手は入れたくないと思っていましたので)

    同じように対応が出来るかはわかりませんが試してみます。

    ありがとうございました。

    (もし具体的な修正方法があれば教えて頂けると助かります。)

     

    2011年11月15日 13:27
  • 代入すれば再定義されます。
    <script type="text/javascript">
    // <![CDATA[
    Sys.Extended.UI.AsyncFileUpload.prototype._onchange = function(){
      ...;
    };
    // ]]>
    </script>
    
    

    • 回答の候補に設定 山本春海 2011年11月25日 9:04
    • 回答としてマーク 山本春海 2011年11月28日 8:40
    2011年11月16日 0:41
  • みなさんのおかげで何とか対応することが出来ました。

    大変ありがとうございました。

    助かりました。

    • 回答としてマーク inoki123 2011年11月27日 13:32
    2011年11月27日 13:31