2010-02-09 39 views
6

Tôi gặp sự cố khi nhận giá trị từ cookie chứa dấu phẩy. Nó trả về không đầy đủ chuỗi nhưng chuỗi bị cắt thành dấu phẩy đầu tiên. Ví dụ:Không thể nhận được giá trị từ cookie trong Java. Giá trị chứa dấu phẩy.

// cookie value = var1,var2,var3 
String cookieVal = cookie.getValue(); 
//cookieVal now is "var1" instead of "var1,var2,var3" 

// cookie value = var1=var2=var3 
String cookieVal = cookie.getValue(); 
//cookieVal now is "var1=var2=var3" 

am i làm gì sai.

+0

cuối cùng bạn đã giải quyết được sự cố của mình chưa? bạn đã gửi báo cáo lỗi chưa? – Bozho

+0

Không, không có giải pháp cho việc này. Tôi đã lấp đầy lỗi cho google analytics (vấn đề gdata, không thể tìm thấy địa điểm tốt hơn). –

+0

Bạn đã tìm ra cách để thực thi Java để đọc phiên bản 1 (RFC 2109) chưa? –

Trả lời

2

Dấu phẩy là một phần của định nghĩa giá trị tiêu đề http, do đó, dấu phẩy mã hóa url trong giá trị cookie.

URLEncoder.encode(cookieValue); 

Tôi thấy điều này:.

"[Cookie value] Chuỗi là một chuỗi các ký tự không bao gồm dấu chấm phẩy, dấu phẩy và không gian trắng Nếu có nhu cầu đặt như dữ liệu trong tên hoặc giá trị, một số phương pháp mã hóa như phong cách URL% XX mã hóa được khuyến khích, mặc dù không mã hóa được định nghĩa hoặc yêu cầu"

các RFC nói:

, định đáp ứng tiêu đề Set-Cookie bao gồm các dấu hiệu set- Cookie :, sau đó là một danh sách bằng dấu phẩy của một hoặc nhiều cookie. Mỗi cookie bắt đầu bằng cặp NAME = VALUE, theo sau là 0 hoặccặp giá trị thuộc tính được phân tách bằng dấu hai chấm.

Cập nhật: Sau khi bạn làm sáng tỏ rằng bạn đang phân tích một cookie từ google: Tôi nhìn qua tất cả các tập tin cookie __utmX của tôi và không ai trong số chúng chứa dấu phẩy. Dấu phân cách có | hoặc được mã hóa url :

+0

Như tôi đã viết ở trên: Tôi không đặt cookie. Tôi chỉ đang cố gắng phân tích cú pháp cookie __umtv của google. –

+0

@mynthon - cung cấp cho tôi liên kết đến trang web của bạn. Tôi không tin rằng cookie __utm có giao dịch – Bozho

+0

không thể hiển thị vì nó không ở giai đoạn sản xuất nhưng tôi đã chuẩn bị bản demo trên trang web của mình: http://mynthon.net/_lab/gacookie –

5

Hãy xem Cookie Documentation. Nó nói:

Lớp này hỗ trợ cả phiên bản 0 (bởi Netscape) và Phiên bản 1 (theo RFC 2109) thông số kỹ thuật cookie. Theo mặc định , cookie được tạo bằng cách sử dụng Phiên bản 0 để đảm bảo khả năng tương tác tốt nhất .

Và nếu bạn thấy phương pháp setValue bạn sẽ tìm thấy điều này

Với Version 0 cookies, các giá trị không được chứa khoảng trắng, dấu ngoặc, dấu ngoặc đơn, dấu bằng, dấu phẩy, dấu ngoặc kép, dấu gạch chéo, câu hỏi dấu, dấu, dấu hai chấm và dấu chấm phẩy. Giá trị trống có thể không hoạt động theo cùng một cách trên tất cả các trình duyệt.

EDIT: Chỉ cần đọc điều google. Có thể thử đặt phiên bản thành 1 và xem nó hoạt động như thế nào.

0

Bạn có chắc chắn cần lưu trữ một bộ trong cookie không? Không được sử dụng cookie IMHO để lưu trữ dữ liệu ngoài các số nhận dạng.Lưu trữ dữ liệu phải được thực hiện ở phía máy chủ bất cứ khi nào có thể.

+0

Google sử dụng dấu phẩy trong các cookie "__utmv" của nó và tôi phải phân tích cú pháp cookie của Google. –

+0

Ah. Đuợc. Sau đó, tất nhiên bạn phải gắn bó với câu trả lời của Lombo ;-) – er4z0r

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