2015-05-28 145 views
4

我使用的是AngularJS 1.4.0和$cookies服務。下面的代碼將始終打印出一個空對象:

(function() { 
    var app = angular.module("user-cookies-service", []); 

    app.service('UserCookiesService', ["$cookies", function($cookies) { 
     $cookies.put("Hello", "World"); 
     console.log($cookies.getAll()); 
    }]); 
})(); 

我已經試過:

  • 使用AngulerJS 1.3.15和$cookieStore其中cookie時刷新瀏覽器不持久(但至少創建了cookie)。
  • 添加到期日期。
  • 確保我的瀏覽器中啓用了Cookies(Chrome)。
  • 嘗試普通的老JS,但仍然無法正常工作。

我一直無法找到類似的問題。

謝謝。

+0

是否有任何錯誤控制檯? – User2

+0

不,它不適用於普通的舊JS。如果這有所幫助,我的瀏覽器中啓用了Cookie。 – cohenadair

+0

想通了,顯然你必須啓動chrome與一個特定的標誌允許本地文件的cookie。我正在寫一個答案。 – cohenadair

回答

2

對於任何人誰在這個問題絆倒......

默認情況下,Chrome瀏覽器不允許本地文件的Cookie。您必須使用--enable-file-cookies標誌運行它。

確保Chrome關閉和打開Windows命令提示符/終端,運行以下命令:

<path-to-chrome>/chrome.exe --enable-file-cookies 

這將允許你把/獲取本地餅乾。

乾杯!

0

也許餅乾應該刷新後可用,嘗試登錄它相反的方式

console.log($cookies.getAll()); 
$cookies.put("Hello", "World"); 

第一負載:{},第二負載:{ 「你好」: 「世界」}

在角1.3,使用$ cookies.Hello =「world」;設置cookie

+0

謝謝,但看到我自己的答案。我偶然發現了Chome開發者的控制檯時偶然發現了它。 – cohenadair

2

有點晚,但對於任何人有同樣的問題。我有類似的問題。你必須確保你傳遞正確的選項作爲第三個參數。在我的情況下,路徑沒有被設置。 Angular使用您的<base>標籤設置路徑。如果由於任何原因無法使用,則不會設置Cookie。

試試這個

$cookies.put('secret', 'I cant tell you' { 
    expires: new Date(date), 
    path: '/' 
}); 
+0

這一個在Chome工作 – zaqpiotr