2017-01-28 17 views
1

如果您發送Ajax請求到服務器和你的cookies的尺寸太大,你得到的消息:如何在發送ajax請求時過濾cookie?

壞請求

您的瀏覽器發送的請求,該服務器無法理解。 請求標頭字段的大小超出服務器限制。

餅乾

有沒有辦法通過JavaScript發送請求之前過濾餅乾(jQuery的,有角度的)?例如:我在某個網站上有25kb的cookie(限制在服務器上是16kb),其中有一個會話cookie。我如何才能將會話cookie發送到服務器或我想要的cookie?這有可能沒有刪除多餘的cookies?

另一個示例: 我有域名Cookie .mysite.com。如果我去one.mysite.com我得到另一個餅乾,當我去two.mysite.com安裝新的餅乾等。當我從這些網站之一發送ajax請求時,cookies會進行彙總,並且它們都會發送到可能超出服務器限制的請求標題。

我有很多餅乾,但沒有人超過3kb。主要問題是:我可以通過域名過濾JavaScript中的Cookie嗎?

+0

我有點困惑......如果cookie對於你的服務器來說太大(注意cookie被限制在4k的客戶端存儲),這應該不僅僅是一個Ajax請求的問題,而是任何http請求。請提供更多信息。爲什麼你的cookie超過4k(你的標準cookie的大小限制)? – jeremy

+0

@jeremy我有域名Cookie「.mysite.com」。如果我去'one.mysite.com',我會得到另一個cookies,當我去'two.mysite.com'時,會安裝新的cookies等。當我從其中一個站點發送ajax請求時,cookies會進行總結,並且它們全部去可能超過服務器限制的請求的頭部。 –

+0

是非常混亂。你有多少cookie生成pre域名?有超過4k的餅乾嗎?您可以一次調用一個cookie,但如果太大,則您在一個cookie中存儲的方式太多。可能想重新考慮你的代碼。 –

回答

0

只需設置域和路徑屬性Cookie的,如:

<script type="text/javascript"> 
var cookieName = 'HelloWorld'; 
var cookieValue = 'HelloWorld'; 
var myDate = new Date(); 
myDate.setMonth(myDate.getMonth() + 12); 
document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate + ";domain=.example.com;path=/"; 
</script> 

然後就可以調用一個cookie由它的域值。

+1

好吧,但是當我從頁面發送ajax請求時,頁面中的所有cookie都會轉到Header請求。有沒有機會發送某些餅乾? –