2012-08-31 73 views
1

尋找在JSON和基於Ajax的Web應用程序中設置瀏覽器Cookie的可接受實踐。使用Ajax和JSON時設置Cookie

瀏覽器似乎不接受來自服務器的用於JSON請求的cookie。這給我留下了兩個選擇,我可以看到:

  1. 如果這樣做,需要涉及餅乾,不使用JSON的請求,而是評估JSON文本得到使用JSON.parse()
  2. 發送客戶端後操作通過JSON從服務器到客戶端的cookie信息,然後使用瀏覽器設置cookie而不是通過服務器頭。這是否也意味着cookie信息必須在客戶端讀取並通過JSON發送回服務器,因爲瀏覽器不會通過AJAX JSON請求發送cookie信息?

我的傾向是與選項#1,但這些都看起來很蹩腳的選項。我在這裏錯過了什麼嗎?

謝謝!

回答

1

僅當域屬性與您所在的域匹配時纔會發送Cookie。

因此,例如,你設置了一個coockie域名'.domain.com'。任何對domain.com或任何子域的請求都將包含cookie,但僅限於此。

對於其他域的請求,您需要coockie set serverside,或者用戶是否與爲該域設置cookie的頁面進行交互。

2層簡單的方法來設置浮現在腦海中的cookie是:

  1. 顯然,做一個Ajax調用腳本來設置Cookie
  2. 做這樣的事情:

HTML:

<script type="text/javascript" src="http://domain2.com/cookie_login_page.php?username=johnsmith&hash=1614aasdfgh213g"></script> 

PHP:

<?php 
    // ... setCookie stuff 
    echo 'var cookie_set = true;'; 
?>