前言
最近同事把系統安裝到新的環境上,卻發現原本可以執行的功能卻不能執行了。
但舊的機器卻是沒問題的。
這種狀況其實常常發生,還好舊的環境還在,所以可以做的對照組來比較一下。
尋找問題
一開始透過 F12 來比較一下發現,舊的走的協定都是 Https ,而新的走的協定卻是 Http/2 。
所以在機碼 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters 中加入2個 DWORD (32-bit) 機碼,並設定值為 0
EnableHttp2Tls 及 EnableHttp2Cleartext
並重新開機再試一次。
雖然這次新安裝的系統都已走 Https 了,但還是有錯誤。
於是看一下 Console ,裡面有 SEC7112 的警告,
SEC7112: 因為 MIME 類型不符,所以從 https://ashxurl 封鎖指令碼
謎題解開了,原來是因為 ashx 在 render javascript 內容時,使用錯的 Content-Type ,導致 Javascript 無法執行。
執行時自然就會發生 Javascript 的錯誤。
因為新安裝的系統中,同事在 web.config 多加入 X-Content-Type-Options 設定為 nosniff 的自定標頭,
所以它會檢查javascript的 MIME 格式,而之前的程式設定的 MIME Type 為 type/javascript 。
所以就被擋住了。
後來請同事將 Content-Type 改成 text/javascript 就解決了。
Support 的 Javascript MIME Type 可以參考 javascript MIME type
參考資料
IE-Console error messages in F12 developer tools
javascript MIME type