在服务器端的 cookie 上设置 HttpOnly 会影响在浏览器中创建的 cookie 吗?

Does setting HttpOnly on cookies on the server side affect cookies created in the browser?

我正在管理服务器,并且一直在考虑为我的 cookie 设置 HttpOnly。

虽然我没有任何在服务器端和客户端都与之交互的 cookie,但为所有 cookie 启用此选项是否会阻止客户端生成的 cookie 在后续页面加载时被访问?

澄清一下,这将被设置为服务器选项。 我正在使用 Apache,所以这类似于: Header edit Set-Cookie ^(.*)$ ;HttpOnly;Secure 在 Apache 配置中。

此外,问题是基于使用 cookie 进行数据存储。 LocalStorage 不在问题的上下文中,即使它是一种比存储纯粹在客户端使用的数据更好的方法。

Would enabling this option for all cookies prevent client-side generated cookies from being accessed on subsequent page loads?

是的。 JS 无法访问服务器响应标记为 HttpOnly 的 cookie 的值,也无法向其写入新值。

尽管如此,我还没有发现当 JS 试图写入一个时到底发生了什么,浏览器似乎用本地存储的一个隐藏了 http 发送的一个,该本地存储的只能由客户端脚本访问。不过,我不会依赖这种行为,写入可能会被忽略。在较旧的浏览器中,似乎存在写入 http-only cookie 的错误。

但是,无法为 所有 个 cookie 启用 HttpOnly。您必须在每个交换的 cookie 上单独设置它,因此该选项只会对服务器使用该标志发送给客户端的那些 cookie 启用。

因此,如果您将 Apache 配置为在所有传出 cookie 上启用该标志,它仍然取决于您的服务器应用程序是否镜像客户端发送的所有 cookie。通常它不会,并且只发送它确实想要设置的 cookie(对于它自己,要在服务器上使用)。