为什么 JSP 中的 cookie 对象只能包含 String 类型的值?

Why cookie object in JSP can contain just value of type String?

作为 JSP 的初学者,我注意到我们可以在 session 中保存任何值,而 cookie 可以仅具有 String 类型的值。我发现这很奇怪,因为如果有人想在 Cookie 中保留 String 以外的类型怎么办?

setAttribute(String name, Object value)

Binds an object to this session, using the name specified.

Cookie(String name, String value)

Constructs a cookie with a specified name and value.

社区的人可以帮助我理解它吗?为什么我们不能在 Cookie 中存储除 String 之外的任何内容,而我们可以在 Session 的标签中存储?

或者换个角度,为什么cookie只能保存String值?

因为 RFC 6265 指定 cookie 来存储文字字符串值,供网络浏览器作为 HTTP 请求的一部分发送 header。

来自链接的 RFC,

cookie-header = "Cookie:" OWS cookie-string OWS
cookie-string = cookie-pair *( ";" SP cookie-pair )

tl;dr cookie 是网络协议的一部分(并由其指定)(不是 Java)。