有人可以逐步描述基于 cookie 的身份验证是如何工作的吗?我从来没有做过任何涉及身份验证或 cookie 的事情。浏览器需要做什么?服务器需要做什么?以什么顺序?我们如何保证事情的安全?
我一直在阅读有关不同类型的身份验证和 cookie 的信息,但我想要一个关于如何一起使用这两者的基本描述——我只读过它们经常一起使用,但找不到关于如何使用的描述。
cookie 基本上只是字典中的一个项目。每个项目都有一个键和一个值。对于身份验证,密钥可能是“用户名”,值是用户名。每次您向网站发出请求时,您的浏览器都会在请求中包含 cookie,主机服务器将检查 cookie。所以认证可以像这样自动完成。
要设置 cookie,您只需将其添加到服务器在请求后发回的响应中。浏览器将在收到响应后添加 cookie。
您可以为 cookie 服务器端配置不同的选项,例如过期时间或加密。加密的 cookie 通常称为签名 cookie。基本上服务器对字典项中的键和值进行加密,因此只有服务器可以使用这些信息。所以cookie是安全的。
浏览器将保存服务器设置的 cookie。在浏览器向该服务器发出的每个请求的 HTTP 标头中,它将添加 cookie。它只会为设置它们的域添加 cookie。Example.com 可以设置 cookie 并在 HTTP 标头中添加选项,以便浏览器将 cookie 发送回子域,例如 sub.example.com。浏览器将 cookie 发送到不同的域是不可接受的。