2010-02-18 89 views
3

我可以通過AJAX請求調用服務器來設置一個新的cookie(也就是在頁面已經加載完成後)嗎?可以通過AJAX請求發送標題嗎?

例如,當訪問者點擊一個鏈接,AJAX會打開一個PHP文件,設置新的Cookie是這樣的:

setcookie('cookiename', 'true', time()+3000, "/",'...'); 

但這是HTML後(完成包含實際<a>標籤頁被按下)被渲染。是否可以在ajax中設置cookie? (也許是因爲加載的PHP文件與原始HTML頁面分開)。

回答

0

爲什麼不使用javascript來編輯cookie?以JSON格式返回cookie的內容,並使用javascript存儲值。

+2

您不能從JavaScript設置HTTPONLY Cookie。 – 2010-02-18 14:05:55

1

我已經設置在迴應我的網站上AJAX請求餅乾和我沒有任何問題,它呢。 (儘管我沒有找到問題。)可能是因爲某些瀏覽器在XmlHttpRequest中收到cookies時沒有設置cookie,但到目前爲止,我已經看到它在IE,Chrome和Firefox中可用。

3

您可以讓服務器的響應設置一個cookie,當然。請記住,Cookie是HTTP事物,而不是HTML事物;您的原始HTML文件已經在瀏覽器中的事實是無關緊要的。您的ajax請求是一個到服務器的單獨HTTP請求,它(希望!)生成一個HTTP響應回瀏覽器;並且該響應可以包括新的頭文件Set-Cookie

我不是一個PHP的人,你需要檢查是否有在您使用的是設置cookie(我不能想象有)PHP的機制的限制。但從根本上說,不,這樣做沒有問題。我已經用JSP和傳統的ASP做了它。

+1

重定向標頭也是一件HTTP事情,但是嘗試在ajax請求中從服務器重定向用戶只會導致發送給JS的不同輸出! – Gal 2010-02-18 14:32:28