2013-10-16 13 views
9

Tôi đang viết một cookie từ một máy chủ thông qua các phản ứng và nó là tốt vấn đề là khi tôi cố gắng đọc cookie tương tự sử dụng angularJs $ cookieStore.get() trả về luôn ' không xác định', tôi đã sửa lỗi với các công cụ phát triển sử dụng chrome và cookie là có,

console.log($cookieStore.get("r")); 

các $ cookieStore dường như được tiêm và chạy ok, tôi chỉ tự hỏi tại sao angularJs không thể đọc cookie.

r: undefined

enter image description here

Edit:

Tôi đã thử với dịch vụ $ cookie và tôi nhận được xác định là tốt.

tôi gửi cookie ở phía máy chủ mà không có vấn đề gì, tôi nhận được cookie trong các công cụ phát triển chrome

Tôi đang sử dụng dịch vụ Stack và mã được như sau:

public override object Logout(IServiceBase service, ServiceStack.ServiceInterface.Auth.Auth request) 
     { 
      var resp = service.RequestContext.Get<IHttpResponse>(); 
      resp.Cookies.AddCookie(new Cookie { Name = "r", Path = "/", Value = "from server", HttpOnly = false, Discard = false, Expires = DateTime.Now.AddHours(12) }); 
      return base.Logout(service, request); 
     } 

Trả lời

6

Tôi nghĩ rằng $cookieStore chỉ có nghĩa là để được sử dụng bởi chính nó, là 'r' đặt ở một nơi khác? Các tài liệu nói rằng nó cung cấp một kho khóa/giá trị được hỗ trợ bởi các cookie, không phải truy cập trực tiếp vào các cookie. Khi tôi đặt 'myValue' thành 'jason', nó lưu trữ %22jason%22(fiddle). Điều này có nghĩa là bạn có thể đặt giá trị cho các đối tượng javascript nếu bạn muốn và cookieStore sẽ tuần tự hóa và deserialize chúng cho bạn.

enter image description here

Hãy thử sử dụng $cookies thay vì nơi bạn chỉ có thể thiết lập các thuộc tính và các giá trị được không mã hóa (fiddle):

enter image description here

$scope.setValue = function() { 
     $cookieStore.put("myValue", $scope.value); 
    }; 

    $scope.getValue = function() { 
     $scope.value = $cookieStore.get('myValue'); 
    }; 

    $scope.setCookieValue = function() { 
     $cookies.otherValue = $scope.value; 
    }; 

    $scope.getCookieValue = function() { 
     $scope.value = $cookies.otherValue; 
    }; 
+0

** là 'r' đặt ở một nơi khác? **, vâng nó đã được thiết lập trên máy chủ bên -Tôi chỉ muốn có quyền truy cập trực tiếp đến giá trị Nó rất ra, Tôi sẽ cố gắng để sử dụng $ cookie thay vì –

+0

$ cookie [ 'r'] và $ cookies.r không xác định trong cả hai trường hợp –

+0

những gì hiện 'document.cookie' hiển thị trong giao diện điều khiển? –

6

Có @Pedro là ngay trong .NET, cho Ví dụ, khi thực hiện xác thực với HttpCookie theo mặc định thuộc tính HttpOnly là đúng và trong javscript -> document.cookie không thể tìm thấy cookie bạn vừa lưu vào trình duyệt.

Nó làm việc cho tôi bằng cách thiết lập để HttpOnly sai khi lưu các tập tin cookie.

+0

điều cần biết! cảm ơn vì đã chia sẻ trải nghiệm –

+0

Đó phải là một nhận xét. với 51 danh tiếng, bạn sẽ có thể bình luận. –

Các vấn đề liên quan