如何知道cookie是否是HttpOnly服务器端

时间:2017-08-16 13:08:13

标签: java spring-boot cookie-httponly

我有一个使用Spring Boot的应用程序,我设置了一个HttpOnly cookie。在浏览器中,我可以检查它并看到它设置为HttpOnly。有了这个,我避免客户端使用它上面的JavaScript。

但是,在阅读cookie时,我是否必须在服务器端执行任何操作?据我所知,我不能使用javascript来读取cookie,但我仍然可以使用浏览器插件创建一个与HttpOnly相同名称和值的非HttpOnly cookie。在服务器端,我不需要验证cookie以及它是否是HttpOnly?

我尝试通过从请求中获取Cookie列表来尝试这样做,但似乎所有这些都将不同的字段设置为默认值。我能读到的唯一字段是cookie的名称和值。

这是预期的行为吗?

1 个答案:

答案 0 :(得分:0)

这确实是指定的行为。

Set-Cookie 标头将 HttpOnly 之类的信息传输给客户端。但是从客户端到服务器的调用使用 Cookie 标头,它只包含 cookie 名称和值(但没有更多信息)。因此,服务器无法仅从 Cookie 标头中获取此信息。它根本不存在。

这在 RFC 6265 „HTTP State Management Mechanism“ in Section 5.4 „The Cookie Header“ 中指定:

   4.  Serialize the cookie-list into a cookie-string by processing each
       cookie in the cookie-list in order:

       1.  Output the cookie's name, the %x3D ("=") character, and the
           cookie's value.

       2.  If there is an unprocessed cookie in the cookie-list, output
           the characters %x3B and %x20 ("; ").

由于缺少信息,通常设置为默认值。