天天看點

java swfupload 302錯誤_解決swfupload.swf在所有浏覽器中發出的多餘請求導緻的302錯誤...

在項目先是使用了uploadify,後來發現在IE下總會引起程式中的錯誤.

先說下使用uploadify的這個子產品,項目用的是Thinkphp架構,URL解釋使用的PATHINFO模式,

請求的頁面是一個商品編輯頁面,/mgr/goods/edit/24.html(看得懂吧?分組/控制器/方法/參數/字尾).

在edit這個方法裡,做了正常判斷,如果擷取的參數id=24在資料庫中查不到,則跳轉回請求時的頁面同時建立一個session,其中架構裡擷取session的方法做了點修改:

擷取 :session('name', true); //true 的話,拿到這個session當即銷毀

如果在資料庫中拿不到id=24的資料,則建立session并且跳轉會請求時的頁面REFERER,模版中識别到有錯誤提

示的session,則顯示

java swfupload 302錯誤_解決swfupload.swf在所有浏覽器中發出的多餘請求導緻的302錯誤...

可就這一舉措,不知道為什麼在IE下一通路存在的商品編輯頁面下就會提示這個錯,百思不得其解..

後來F12捕獲了網絡請求,才知道是uploadif.swf發起了一個請求,如圖:

java swfupload 302錯誤_解決swfupload.swf在所有浏覽器中發出的多餘請求導緻的302錯誤...

可以看見,正常情況請求的是帶有參數的url,可這貨莫名其妙的就去請求這個連結,導緻控制器中沒有擷取到參數而設定session的錯誤提示..

發現問題後,換了swfupload這個插件,同樣也是,原來他們同樣都是使用了swfupload.swf這東西,

分别細讀了兩個插件的文檔,也看了插件中的代碼,發現沒有可以解決這一辦法的途徑.

因為這一不良請求是Flash程式發起的,那就從swfupload.swf下手,當時我還不知道有源碼這東西,

就下了些工具對swfupload.swf進行拆卸,在導出的SWFUpload.as發現了問題所在,在該檔案的1080行中:

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搞定..