2012-09-12 56 views
0

在Firefox中使用Uploadify時,在Firefox中使用Uploadify時不起作用。我只是不斷從Uploadify獲得302錯誤。經過多次討論後,我發現這是因爲Flash在其請求中沒有保留任何會話信息(wtf?)。我看到了一些解決方案,包括從cookie中獲取會話ID並將其傳遞給uploadify,以便「重建」。Flash Uploadify在調用我的MVC控制器時沒有保留會話/授權

但是,會話id和auth id存儲爲httponly cookie,這意味着我無法通過javascript訪問它們(據我所知)和我的$ .uploadify調用都是嚴格的.js文件。所有的解決方案都顯示了使用Razor或原來的渲染引擎來抓取這些ID,這是我無法做到的。

有沒有什麼辦法解決這個問題,或者我將不得不從調用視圖中一直通過多個JavaScript調用來訪問uploadify部分的這些ID?

回答

0

那麼,我最終以一種我不喜歡的方式繞過它,但它必須做到。由於我的.uploadify調用是在JavaScript文件中,因此我無法訪問我需要的cookie(它們是HTTPONLY cookie)。所以我只做了一個簡單的服務器調用,從響應中抓取了cookie,並通過formData傳遞給它們。

0

可以this*有幫助嗎?

在Uploadify中,Flash文件是與後端腳本通信的內容。由於Flash中存在錯誤,因此會話Cookie不會被Flash文件拾取。爲了避免這種情況,您需要通過formData選項傳遞會話數據。

客戶:

$('#file_upload').uploadify({ 
    // Your normal options here 
    formData : { '<?php echo session_name();?>' : '<?php echo session_id();?>' } 
}); 

服務器:

$session_name = session_name(); 

if (!isset($_POST[$session_name])) { 
    exit; 
} else { 
    session_id($_POST[$session_name]); 
    session_start(); 
} 

* 當然同樣可以在PHP中做到這一點,前端頁面初始化Uploadify時使用下面的代碼用C#完成。

相關問題