Servlets 什么时候Cookie比会话更可取?

Servlets 什么时候Cookie比会话更可取?,servlets,cookies,Servlets,Cookies,我看到了javacookies的概念。 Cookie上有很多东西,当小数据需要存储在客户端时可以使用它 但是你能告诉我,我们应该什么时候使用饼干吗 当Cookie比会话更可取时,Cookie比会话更不安全 会话完全由服务器控制。在这两种情况下,客户机都需要安全地呈现真实的会话数据,但是使用cookie,有更多的机会可以偷偷查看内部的情况。cookie盗窃的后果通常比不透明会话ID的盗窃更严重 Cookie的开发速度更快,因为服务器没有设置会话数据库等,但如果您关心设计,Cookie的质量会更低。

我看到了javacookies的概念。 Cookie上有很多东西,当小数据需要存储在客户端时可以使用它

但是你能告诉我,我们应该什么时候使用饼干吗


当Cookie比会话更可取时,Cookie比会话更不安全

会话完全由服务器控制。在这两种情况下,客户机都需要安全地呈现真实的会话数据,但是使用cookie,有更多的机会可以偷偷查看内部的情况。cookie盗窃的后果通常比不透明会话ID的盗窃更严重


Cookie的开发速度更快,因为服务器没有设置会话数据库等,但如果您关心设计,Cookie的质量会更低。

Cookie的安全性不如会话

会话完全由服务器控制。在这两种情况下,客户机都需要安全地呈现真实的会话数据,但是使用cookie,有更多的机会可以偷偷查看内部的情况。cookie盗窃的后果通常比不透明会话ID的盗窃更严重


Cookie的开发速度更快,因为服务器没有设置会话数据库等,但如果您关心设计,Cookie是一个质量较低的解决方案。

这是一整套设计决策的一部分,涉及到当一个系统中涉及多台计算机时,我们需要在何处保存状态信息

当您说session时,我怀疑您指的是servlet容器将为您管理的HttpSession。HttpSession实际上很可能是通过使用cookie来维护的:cookie只是保存了会话表的某种键

这种将减少的数据量传递回浏览器并让服务器跟踪主要内容的模式也很常见。有时候,人们使用这三种方式:cookie,比如说,用于小东西,HttpSession作为方便的缓存,以及用于他们真正关心的东西的数据库

有很多因素需要考虑,这里有几个:

在一个cookie中发送多少数据是合理的,太多的东西会变慢。 这有多安全?服务器通常会收集比用户在此会话中输入的数据更多的数据,如果我们将敏感数据以cookie的形式发送回浏览器,我们有多大信心它不会被劫持或读取? 我们选择的会话机制有多可靠?失去浏览器,失去我们刚刚要买的5k度假预订?是否丢失服务器上的HttpSession?也许是同样的结果?有些应用服务器有会话复制,但这是一种开销。 就我个人而言,我发现HttpSessionAPI通常非常方便,我从不选择使用cookie。我的经验法则是,如果可以随时重新创建,请将其保存在HttpSession中,否则请确保它保存在数据库中,如果需要,请创建一个专门用于状态管理的数据库,并且不要忘记该数据库的内部管理


可重新创建的东西的例子:从数据库中检索到的东西,我们总是可以再次获取它们,用户不介意重新输入的东西,比如一些搜索条件。不可重新创建的示例:17页完整的保险申请表。

这是一整套设计决策的一部分,涉及到当一个系统涉及多台计算机时,我们需要在何处保存状态信息

当您说session时,我怀疑您指的是servlet容器将为您管理的HttpSession。HttpSession实际上很可能是通过使用cookie来维护的:cookie只是保存了会话表的某种键

这种将减少的数据量传递回浏览器并让服务器跟踪主要内容的模式也很常见。有时候,人们使用这三种方式:cookie,比如说,用于小东西,HttpSession作为方便的缓存,以及用于他们真正关心的东西的数据库

有很多因素需要考虑,这里有几个:

在一个cookie中发送多少数据是合理的,太多的东西会变慢。 这有多安全?服务器通常会收集比用户在此会话中输入的数据更多的数据,如果我们将敏感数据以cookie的形式发送回浏览器,我们有多大信心它不会被劫持或读取? 我们选择的会话机制有多可靠?失去浏览器,失去我们刚刚要买的5k度假预订?是否丢失服务器上的HttpSession?也许是同样的结果?有些应用服务器有会话复制,但这是一种开销。 就我个人而言,我发现HttpSessionAPI通常非常方便,我从不选择使用cookie。我的经验法则是,如果可以随时重新创建,请将其保存在HttpSession中,否则请确保将其保存在数据库中,如果需要,请专门为sta创建一个数据库 te管理,不要忘记数据库的内务管理


可重新创建的东西的例子:从数据库中检索到的东西,我们总是可以再次获取它们,用户不介意重新输入的东西,比如一些搜索条件。不可重新创建的示例:17页完整的保险申请表。

要回答您的具体问题,当Cookie可以做您不能用会话做的事情时,Cookie比会话更可取。我认为使用它们有两个原因:

当您需要有关客户端的一些信息时,即使用户关闭浏览器,这些信息也必须在多个客户端会话中保持存在。例如,自动登录使用cookie:在客户端会话的第一个请求时,发送cookie,网站因此能够识别用户。 当您需要在多个web应用程序之间的信息之间共享某些信息时,前提是它们都来自同一个域。例如,单点登录可以使用cookie。第一个应用程序对用户进行身份验证并设置令牌cookie,该令牌cookie被发送到第二个应用程序。然后,第二个应用程序可以使用此cookie自动对用户进行身份验证。
为了回答您的具体问题,当Cookie可以完成会话无法完成的任务时,Cookie比会话更可取。我认为使用它们有两个原因:

当您需要有关客户端的一些信息时,即使用户关闭浏览器,这些信息也必须在多个客户端会话中保持存在。例如,自动登录使用cookie:在客户端会话的第一个请求时,发送cookie,网站因此能够识别用户。 当您需要在多个web应用程序之间的信息之间共享某些信息时,前提是它们都来自同一个域。例如,单点登录可以使用cookie。第一个应用程序对用户进行身份验证并设置令牌cookie,该令牌cookie被发送到第二个应用程序。然后,第二个应用程序可以使用此cookie自动对用户进行身份验证。
public class ServletDemo extends HttpServlet{

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException{

        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();

        Cookie cookie = new Cookie("url","mkyong dot com");
        cookie.setMaxAge(60*60); //1 hour
        response.addCookie(cookie);

        pw.println("Cookies created");
    }
}