###前提・実現したいこと
CakePHP+Ext JSで開発したWebサイトにてファイルのダウンロード機能がありますが、Firefoxのバージョン56.0以降で正常に動作しません。
###発生している問題・エラーメッセージ
Firefox 55.0では「ファイルを開く」「保存する」を選択するポップアップが表示され、ダウンロードが行えていましたが、Firefox 56.0にバージョンアップしたところ、ポップアップが表示されなくなり、ダウンロードが行えなくなりました。
###該当のソースコード
○呼び出し方法 Report.download(Report.CSV, [], "items", "sample.csv", WEB_ROOT + "items/print_list/csv/", params); ○呼び出し先関数 Report.download = function(type, data, template, output_file, creater, params) { var session_check_flg = false; //mainコントローラ以外はチェックを行う if(creater == undefined){ session_check_flg = true; }else{ if(creater.search(WEB_ROOT + 'main/') == -1){ session_check_flg = true; } } if(session_check_flg){ //セッションチェック Ext.Ajax.request({ url : WEB_ROOT + "reports/session_check/", method : "GET", scope : this }); } // ダウンロード処理に必要な要素を追加 if (Ext.get("ReportDownloadLayer") == null) { $(document.body).append("<div id='ReportDownloadLayer' style='display:block;'><iframe id='ReportDownloader' name='ReportDownloader' frameborder='0' width='0' height='0' css='display:none;visibility:hidden;height:0px;'></iframe></div>"); } var userAgent = window.navigator.userAgent.toLowerCase(); var appVersion = window.navigator.appVersion.toLowerCase(); if (userAgent.indexOf("msie") > -1 && Ext.getCmp('SMC00201E') != undefined) { //IEは印刷時に警告が出るので、フラグで制御 Ext.getCmp('SMC00201E').unloadWarning = false; } // 引数が渡されていない場合デフォルト値を設定 creater = creater || WEB_ROOT + "reports/work/"; params = params || { report_data : Ext.encode(data) }; // パラメータ準備 var items = []; if (Ext.isEmpty(params)) { items.push({ name : "report_data", value : Ext.encode(data) }); } else { for (var key in params) { items.push({ name : key, value : params[key] }); } } items.push({ name : "type", value : type }); // 出力種別 items.push({ name : "form_fname", value : template }); // フレームファイル名 items.push({ name : "pdf_fname", value : output_file }); // 出力ファイル名 items.push({ name : "page_break", value : "" }); // サブミットのためのフォーム生成 var form = new Ext.FormPanel({ renderTo : "ReportDownloadLayer", // フォームをレンダリングするエレメント url : creater, // URL standardSubmit : true, // Ajaxではなく通常のPOSTをする defaults : { xtype : "hidden" }, items : items // パラメータ }); form.getForm().getEl().set({target:"ReportDownloader"}); // 帳票出力サーブレットへサブミットしてフォームを削除する form.getForm().submit(); form.destroy(); };
###試したこと
開発者ツールの「ネットワーク」でヘッダ情報を確認したところ、POSTの要求URLのパスが異なっております。
Firefox 55.0
http://xxxxx/chk2_re/app/webroot/index.php/items/print_list/csv/
Firefox 56.0
http://xxxxx/chk2_re/
⇒55.0ではパスが通っているが、56.0はパスが途中で切れている状況
###補足情報(言語/FW/ツール等のバージョンなど)
・OSはWindows7 32bit、Windows10 64bitで確認
・IEやChromeではダウンロード可能
あなたの回答
tips
プレビュー