地區測試取得正確文件,存檔名稱卻亂碼或不符預期。HTTP 200無法指出名稱在哪個階段改變。應分別記錄最終回應建議的名稱、網頁下載機制選定的名稱,以及本機實際存檔名稱。
本文適用於獲授權的網站QA與客戶下載體驗驗收,不代表已完成瀏覽器實測,也不保證各瀏覽器行為相同。使用團隊自有的小型無害檔案,不要使用客戶的私密匯出資料。
一、先定義檔名驗收條件
記錄預期文件身分、語言、基本檔名、副檔名,以及允許的本機調整。法文與英文文件可能原本就有不同檔名。先確認產品承諾在地化命名或統一ASCII名稱,不應以測試者偏好判定。
準備三個自有樣本:簡單ASCII檔名、包含非ASCII字元的在地化檔名,以及含空格的在地化檔名。每個樣本都有穩定內部ID及已知的小型內容。每個案例使用新的空白目的資料夾,避免既有下載造成同名後綴。
二、固定瀏覽器情境,再單獨變更路徑
- 記錄瀏覽器版本、作業系統、介面語言、網頁語言、帳號地區語言、下載偏好與目錄政策。
- 分別使用核准的基準路徑及一條代理路徑,維持等價的應用程式初始狀態。評估路徑時不要同時改變語言。
- 另外執行網頁語言對照,記錄實際選取的檔案ID,避免把不同地區資產誤認為同檔改名。
- 只執行事先約定的少量案例。差異需要調查,但單一配對不能直接證明因果。
98IP動態住宅IP產品頁可協助確認路徑對照使用的產品背景,選擇地區前仍須核對目前帳號的實際選項。代理路徑不會替你設定作業系統語言、執行網頁命名規則,也無法保證瀏覽器採用哪一種下載行為。查核已公布的連線設定時,可參考API設定文件。
三、擷取最終回應的命名建議
在瀏覽器網路工具找到真正回傳檔案的請求,保留去識別化的重新導向鏈,記錄最終狀態、媒體型別及原樣Content-Disposition值。重新導向回應的名字不一定屬於最終檔案回應。也要確認檔案身分:登入HTML被存成文件副檔名,是內容錯誤,不只是檔名問題。
Content-Disposition可以建議內嵌顯示或附件名稱。filename*支援編碼名稱,同時理解filename*與filename的用戶端通常優先採用前者。原始標頭與解讀名稱應並列保留,不要對整個標頭字串盲目百分比解碼,也不要默默修正含糊值。
最終回應沒有該標頭,就如實註記。不要從網址或下載清單倒推出不存在的標頭值,這些是不同層次的觀察。
四、確認網頁如何觸發下載
記錄一般連結、帶download屬性的連結,或先取得資料再建立blob的按鈕。檢查自有版本的實際元素及命名程式。blob流程可能在伺服器回應後由JavaScript重新選名,只查前段網路請求會漏掉這個決策。
download屬性不是對所有跨來源連結都有效的通用指令。標頭建議、受支援的連結行為、瀏覽器設定與檔案系統限制,都可能影響結果,不能把HTML中的名稱直接當作實際存檔名稱。
原生下載觀察與應用程式腳本能讀取的資訊也須分開。腳本讀不到某個回應標頭,不能單獨證明瀏覽器未收到它。請查核應用程式允許的標頭揭露方式,不要關閉瀏覽器防護來讓測試通過。
五、獨立驗證本機存檔結果
記錄使用者編輯前的初始建議名稱、是否出現儲存對話框,以及空白資料夾內實際保存的完整檔名。檢查時顯示副檔名,直接複製名稱資料,不要照截圖重打。產品若要求精確字串相符,外觀相同的名稱還應檢查碼位;視覺相同不一定是相同字串。
以已知內容或雜湊獨立核對小型樣本。名稱正確不代表位元組正確,內容正確也不代表在地化命名可用。意外收到執行檔時,不要為驗收而開啟。路徑安全發現應另開議題,與使用者檔名驗收分開處理。
六、依最早分歧分類
- 最終回應建議已錯誤:以相同檔案ID檢查地區應用程式或遞送設定,先保留兩份原始回應再判定原因。
- 回應正確但應用程式選名不同:檢查連結、blob命名分支與帳號語言。
- 建議正確但本機名稱改變:檢查使用者編輯、既有同名檔、瀏覽器偏好,以及指定環境的檔案系統調整。
- 命名證據相同但內容不同:建立內容遞送議題,不能只因檔名相符就通過。
例如空白資料夾符合條件,重用資料夾才出現後綴,應歸類為本機同名條件。若代理案例也改變帳號語言,對照便存在混雜,應固定語言重跑,再討論路徑責任。
常見問題與上線清單
每種瀏覽器都必須存成完全相同字串嗎?只有產品支援且經測試的標準如此要求時才是。應明列允許調整及瀏覽器、系統矩陣,不要用單一環境宣稱普遍相容。
命令列下載成功能驗收瀏覽器檔名嗎?不能。它能輔助檢查HTTP回應,但輸出命名規則與互動屬於另一條用戶端路徑。
- 檔案ID、預期語言與命名條件已記錄。
- 路徑及語言對照每次只變更一個預定因素。
- 最終標頭、網頁選名與本機檔名分別有證據。
- 內容身分與副檔名已獨立核對。
- 各項例外載明瀏覽器、系統、原因證據及負責人。
上線前可在自有預備環境演練:移除命名標頭、變更blob名稱、預先建立同名檔案。確認報告能定位不同分歧,不會全部標為代理故障。這些是建議演練,並非已執行結果。限制請求量、維持正常安全設定,遮蔽簽名網址與憑證,只向授權審查者保留必要證據。