2015-07-07 13 views
6

Hôm nay tôi phải đối mặt với thuật ngữ "cookiejar" (gói net/http/cookiejar). Tôi đã cố gắng thu thập một số thông tin liên quan đến nó, nhưng không có gì dễ hiểu cả. Tôi biết rằng cookie là cặp khóa/giá trị mà máy chủ gửi cho khách hàng, ví dụ: Set-Cookie: foo=10, trình duyệt lưu trữ cục bộ và sau đó mỗi trình duyệt yêu cầu tiếp theo sẽ gửi các cookie này trở lại máy chủ, ví dụ: Cookie: foo=10.Sự khác nhau giữa cookie và cookiejar là gì?

Ok, nhưng còn khoảng cookiejar? Nó là gì và nó trông như thế nào?

+1

Xem ['net/http.CookieJar'] (https://godoc.org/net/http#CookieJar). –

+0

Liên quan một cách có liên quan: sử dụng https://github.com/gorilla/securecookie hoặc các phiên nếu bạn cần sử dụng cookie để lưu trữ dữ liệu. Cookie được xác thực là quan trọng để bảo mật. – elithrar

Trả lời

15

Như bạn đã mô tả trong câu hỏi, cookie được quản lý bởi trình duyệt (HTTP clients) và chúng cho phép lưu trữ thông tin trên máy tính của khách hàng được trình duyệt tự động gửi theo yêu cầu tiếp theo.

Nếu ứng dụng của bạn đóng vai trò khách hàng (bạn kết nối với máy chủ HTTP từ xa bằng gói net/http), thì sẽ không có trình duyệt nào xử lý/quản lý cookie. Bằng cách này, tôi có nghĩa là lưu trữ/ghi nhớ các cookie đến như là Set-Cookie: tiêu đề phản hồi và đính kèm chúng vào các yêu cầu gửi đi tiếp theo được thực hiện cho cùng một máy chủ/tên miền. Ngoài ra cookie có ngày hết hạn mà bạn cũng sẽ phải kiểm tra trước khi quyết định đưa chúng vào các yêu cầu gửi đi.

Tuy nhiên, loại http.Client cho phép bạn đặt giá trị loại http.CookieJar và nếu bạn làm như vậy, bạn sẽ có quản lý cookie tự động nếu không sẽ không tồn tại hoặc bạn phải tự mình làm điều đó. Điều này cho phép bạn thực hiện nhiều yêu cầu với gói net/http mà máy chủ sẽ xem như một phần của cùng một phiên giống như chúng được tạo bởi trình duyệt thực, vì phiên HTTP thường xuyên (id phiên) được duy trì bằng cookie.

Gói net/http/cookiejar là triển khai CookieJar mà bạn có thể sử dụng ngoài hộp. Lưu ý rằng việc triển khai này chỉ có trong bộ nhớ có nghĩa là nếu bạn khởi động lại ứng dụng của mình, các cookie sẽ bị mất.


Vì vậy, về cơ bản một HTTP cookie là một mảnh nhỏ của dữ liệu được gửi từ một trang web và được lưu trữ trong trình duyệt web của người dùng khi người dùng đang truy cập trang web đó.

Cookiejar là một Go interface của trình quản lý cookie đơn giản (để quản lý cookie từ yêu cầu HTTP và tiêu đề phản hồi) và implementation of that interface.

+3

Đó là một lời giải thích tốt đẹp. – Volker

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