在項目先是使用了uploadify,後來發如今IE下總會引發程序中的錯誤. php
先說下使用uploadify的這個模塊,項目用的是Thinkphp框架,URL解釋使用的PATHINFO模式, html
請求的頁面是一個商品編輯頁面,/mgr/goods/edit/24.html(看得懂吧?分組/控制器/方法/參數/後綴). 數據庫
在edit這個方法裏,作了常規判斷,若是獲取的參數id=24在數據庫中查不到,則跳轉回請求時的頁面同時建立一個session,其中框架裏獲取session的方法作了點修改: php框架
獲取 :session('name', true); //true 的話,拿到這個session立即銷燬若是在數據庫中拿不到id=24的數據,則建立session而且跳轉會請求時的頁面REFERER,模版中識別到有錯誤提 示的session,則顯示
, 網絡
可就這一舉措,不知道爲何在IE下一訪問存在的商品編輯頁面下就會提示這個錯,百思不得其解.. session
後來F12捕獲了網絡請求,才知道是uploadif.swf發起了一個請求,如圖: 框架
能夠看見,正常狀況請求的是帶有參數的url,可這貨莫名其妙的就去請求這個連接,致使控制器中沒有獲取到參數而設置session的錯誤提示.. 工具
發現問題後,換了swfupload這個插件,一樣也是,原來他們一樣都是使用了swfupload.swf這東西, ui
分別細讀了兩個插件的文檔,也看了插件中的代碼,發現沒有能夠解決這一辦法的途徑. this
由於這一不良請求是Flash程序發起的,那就從swfupload.swf下手,當時我還不知道有源碼這東西,
就下了些工具對swfupload.swf進行拆卸,在導出的SWFUpload.as發現了問題所在,在該文件的1080行中:
/* ************************************************************* Button Handling Functions *************************************************************** */ private function SetButtonImageURL(button_image_url:String):void { this.buttonImageURL = button_image_url; try { if (this.buttonImageURL !== null && this.buttonImageURL !== "") { //就是下面這一段發起的請求 //this.buttonLoader.load(new URLRequest(this.buttonImageURL)); } } catch (ex:Object) { } }
因爲使用的是uploadify,我不須要對這個按鈕設置什麼背景圖,我就直接把這段註釋掉了,後來想從新生成.swf才以爲麻煩,找不到途徑,對as proj又不懂,最後找到swfupload.swf的google項目,下了源碼,修改,builid,ok搞定..