gifocus_create_csv.php returned the actual CSV with Content-Disposition: attachment.Content-Disposition was present, the script took the if (disposition) branch, constructed an in-memory Blob, and triggered an anchor download (a.click()). In Menlo, clicking a blob download link automatically opens a new tab and scans the file normally without errors.fetch() with a CSV file, Menlo Proxy intercepted the response and substituted it with Menlo's HTML download page (Content-Type: text/html, NO Content-Disposition header).Content-Disposition was null, GIFOCUS executed its fallback error branch:
const doc = new DOMParser().parseFromString(await res.text(), 'text/html');
document.body.innerHTML = doc.body.innerHTML; // Strips Menlo's <head> CSS & JS!
Here is what all Japanese terms in the customer's portal and error screens mean:
| Japanese Text (Customer View) | English Translation | Context |
|---|---|---|
| CSV出力 (絞り込み) | CSV Export (Filter) | Screen title of mg03d01 dialog |
| 指定された条件によりユーザデータよりCSVファイルの出力を行います。 | Exports CSV file from user data based on specified conditions. | Dialog description |
| 対象ユーザデータ | Target User Data | Form dropdown (e.g. IT-116) |
| 検索項目 | Search Filter Item | Filter criteria input fields |
| ファイルダウンロード中 | File download in progress / Contacting server | Menlo status #loading (should be hidden) |
| ドキュメントを読み込んでいます... | Loading document... | Menlo status #transfer (should be hidden) |
| エラーが発生しました 以下のファイル処理中に問題が発生しました: ファイル名 : IT-116_...csv リトライしてください。 |
An error occurred A problem occurred while processing the following file: File Name: IT-116_...csv Please retry. |
Menlo block-error #block-error. Not a real error! Renders only because Menlo's .hidden { display: none } CSS was lost! |
| コンテンツのスキャンが完了しました | Content scan completed (Clean) | Menlo SafeDocs status inside the viewer iframe |
| ファイルダウンロードでiframeの使用が要求されています。 | An iframe is required for file download. | Fallback text inside #download_monitor iframe |
if (disposition) Branch via Blob)
gifocus_create_csv.php returns the real CSV with Content-Disposition: attachment.Content-Disposition, takes the if (disposition) branch, and downloads the file via in-memory Blob without modifying the page UI.✔ if (disposition) → Normal Blob Download Branch.else Branch)
gifocus_create_csv.php dynamically loads the real template from /home/vagrant/git/menlo-icap/templates/file-download-frame.html on disk (zero hardcoded HTML) and omits Content-Disposition.Content-Disposition is NULL and takes the else fallback branch (document.body.innerHTML = doc.body.innerHTML).<head> was discarded, file-download.css is missing: "エラーが発生しました" falsely displays, and the iframe collapses to 300×150 px!file-download-frame.html has inline protection styles, no false error displays, and the iframe opens cleanly as a full-screen modal!file-download-frame.html or any mock HTML frame.text/csv; charset=UTF-8 stream with Content-Disposition: attachment; filename="IT-116_....csv".fetch().