解決swfupload.swf在全部瀏覽器中發出的多餘請求致使的302錯誤

在項目先是使用了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搞定..

原帖:http://cuelog.com/archives/177.html

相關文章
相關標籤/搜索