Tôi đang gặp khó khăn để tìm ra tiêu chuẩn (hoặc có bất kỳ?) Nào để mã hóa/giải mã các giá trị cookie bất kể nền tảng phụ trợ.Các tiêu chuẩn mã hóa/giải mã cookie độc lập Ngôn ngữ
Theo RFC 2109:
Giá trị được đục vào user agent và có thể bất cứ điều gì các máy chủ gốc chọn để gửi, có thể trong một bảng mã ASCII in server-chọn. "Opaque" ngụ ý rằng nội dung chỉ quan tâm và liên quan đến máy chủ gốc. Thực tế, nội dung có thể đọc được bởi bất kỳ ai kiểm tra tiêu đề Set-Cookie.
có vẻ như "máy chủ là sếp" và quyết định mã hóa nào sẽ áp dụng. Điều này làm cho nó khá khó khăn để thiết lập một cookie từ, nói PHP phụ trợ và đọc nó từ Python hoặc Java hoặc bất cứ điều gì, mà không cần viết bất kỳ mã hóa bằng tay/giải mã xử lý trên cả hai mặt.
Giả sử chúng tôi có giá trị cần phải được mã hóa. Nga /"печенье (*} значения"/
có nghĩa là "giá trị cookie" với một số ký tự không phải là số alpha bổ sung trong đó.
Python:
Hầu hết các máy chủ WSGI cũng làm như vậy và sử dụng lớp SimpleCookie Python rằng mã hóa đến/giải mã từ octal literals mặc dù nhiều nói rằng octal literals are depreciated trong ECMA-262, chế độ nghiêm ngặt. Wtf?
Vì vậy, giá trị cookie liệu của chúng tôi trở nên "/\"\320\277\320\265\321\207\320\265\320\275\321\214\320\265 (*} \320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\"/"
Node.js:
đã không được kiểm tra ở tất cả nhưng tôi chỉ đoán một backend JavaScript sẽ làm điều đó với mẹ đẻ encodeURIComponent và decodeURIComponent chức năng sử dụng hexadecimal thoát/không thoát?
PHP:
PHP áp dụng urlencode với các giá trị cookie mà là tương tự như encodeURIComponent nhưng không hoàn toàn giống nhau.
Vì vậy, giá trị thô trở nên; %2F%22%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D1%8C%D0%B5+%28%2A%7D+%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%22%2F
thậm chí không được bao gồm với dấu ngoặc kép.
Tuy nhiên; nếu JavaScript value
biến có giá trị PHP mã hóa trên, decodeURIComponent(value)
cho /"печенье+(*}+значения"/
, xem "+" ký tự thay vì không gian ..
tình hình trong Java, Ruby, Perl và .NET là gì? Ngôn ngữ nào đang theo dõi (hoặc gần nhất) đối với hành vi mong muốn. Trên thực tế, có bất kỳ tiêu chuẩn cho điều này được xác định bởi W3?
+1 cho mực vô hình! Mặc dù cookie rất tốt có thể được sử dụng để chia sẻ dữ liệu có cấu trúc giữa các máy chủ trên một và cùng một tên miền. – flup
vâng, ví dụ tốt. Tôi rất muốn tặng tiền thưởng này, nếu nó trả lời câu hỏi trong phần ** đậm **. anyways, cookie sẽ có thể được đọc qua nền tảng bất cứ loại dữ liệu mà họ mang .. buồn và đau trong ass. – kirpit
Tôi nghĩ rằng cuối cùng tôi đã hiểu câu hỏi của bạn và chỉnh sửa câu trả lời của tôi cho phù hợp. – Hazzit