2010-08-07 26 views
0

在Windows CE上,我目前處於一種從零開始實施簡單Web服務器的情況。該服務器的主要用途是採用一對一的USB RNDIS連接。服務器由設備上運行的託管應用程序託管。如何在處理標題後立即重定向HTTP POST請求?

因此,我們將POST請求處理與交付的網頁緊密集成。不是處理完整的請求並存儲過大的POST數據,而是通過接收其標題和其內容流來通知當前頁面(由請求標識)。這個解決方案的工作和發光,每個人都很高興。

現在,這裏是一個問題:應用程序的Web界面中的一個頁面允許上傳軟件更新,其大小可以是11MB,例如40MB。在處理此POST請求時,我們有各種驗證步驟,例如基於會話Cookie的權限系統。由於所述會話cookie,我們知道客戶端是否被允許在所有頭部處理完畢後立即上傳軟件更新。是否有任何方法可以避免必須讀取(並放棄)所有POST內容,以便用戶得到即時反饋?

我們的第一個想法是在報頭處理後返回一個正確的錯誤消息響應,然後關閉連接,但瀏覽器(正確地看起來)抱怨由對等體過早地重置。

回答

0

瀏覽器將要發生全傳輸。解決方法是讓用戶更好地響應,可能是在頁面上使用AJAX調用 - 所以頁面不應該接收數據,而應該進行AJAX調用,以便將異步實際上傳到另一個頁面。我自己,我會用jQuery來做這件事,但是你可以把這個腳本放在一起,而不需要任何框架來很容易地完成它。

+0

很傷心:-(感謝您的澄清 – Arne 2010-08-10 12:03:01

0

因爲我最近給相關的RFC仔細一看:

HTTP 1.1看見一個額外的請求頭中包含的那種情景

Expect: 100-Continue 

這告訴服務器來檢查請求頭並返回一個「確定,你現在可以開始給我發送實際內容」或者「對不起,無論你打算髮給我什麼,我都無法處理它」 - 迴應(爲了更精確技術細節見the HTTP 1.1 RFC

但是,這並不能解決我的情況,因爲典型的用戶代理(Firefox 3.6,IE 8)在發佈multipart/form-data時不使用此功能。但是,手工助手應用程序可能需要使用此功能。