2013-08-06 51 views
0

我的工作搜索應用程序允許用戶選擇的結果,並導出它們以不同的格式,如EXCEL,XML等Cookie的內容是否始終成爲請求標題的一部分?

選擇的結果的唯一ID存儲在cookie中,使用JavaScript,使稍後可以發佈此信息以導出搜索結果。

問題是 - 當cookie的內容變得相當大時,Web應用程序防火牆會阻止這些請求。在分析時,我發現所有cookie內容都成爲請求標題的一部分,使其超過防火牆允許的大小。

這種行爲對於所有的cookie都是一樣的嗎?在這種情況下建議的解決方案是什麼?

技術是IIS 4.0服務器上的ASP.NET 4.0。

+0

正常情況下,識別某些結果的唯一標識會非常小(例如64位數字)。您實際上是否將全部結果存儲在cookie中? –

+0

@Daniel:在這種情況下唯一的id是一個6位數的數字,並且當其中有大約100個時發生問題 – itsbalur

+0

所以它是一組唯一的id,每個搜索結果一個,而不是一個唯一的id代表所有結果的集合?如果是這樣,你能不能做後來? –

回答

0

是的,當URL匹配cookie的路徑時,cookie將被包含在對服務器的每個請求中。

鑑於用戶可以選擇隨後要導出的任意項目,因此需要將這些項目的ID存儲在某處。

將它們以純文本形式存儲在cookie中顯然會導致防火牆出現問題。避免這種情況的一個選擇是壓縮ID。例如,如果ID是123456,123459,123463那麼您確實只需要存儲123456; 3; 4(最小數字和增量),但此表單可能很難處理,並且只會在某些情況下受益。

另一種選擇是使用例如gzip格式壓縮cookie數據。但是,如果使用JavaScript編寫cookie,這可能不是直截了當的(儘管你可能會忘記只用純文本編寫當前頁面上的項目,並且在用戶在頁面之間移動時讓服務器壓縮它們)。

如果Cookie中的數據量過大,則可以使用數據庫來查看服務器端狀態。一個包含ExportIdItermId列的表格,您可以根據用戶的操作添加或刪除行,並且只需要在URL或Cookie中發送ExportId

+0

你提到,當URL匹配cookie的路徑時,cookie將被包含在每個請求中。那麼,如果我將cookie存儲在一個虛構的路徑中,它有可能不會在請求中傳遞?使用jQuery cookie插件$。cookie('cookieName','cookiValue',{path:'/ abc'}); – itsbalur

+0

是的,但您仍然需要將所有數據傳送到服務器的方式(例如通過發佈數據)。 –

相關問題