是否可以发送没有cookie的HTTP请求?

时间:2011-02-20 10:57:59

标签: http cookies

我必须从服务器向浏览器发送一次私有数据。我想将它存储在cookie中。此数据稍后将在Javascript代码中使用。但是我希望在浏览器执行HTTP请求时(因为安全性)将此私有数据发送到服务器(!)。 我知道我可以在cookie中设置“path”值(即一些抽象路径)然后我将无法读取此cookie(我将能够从这个抽象路径中读取,但如果是这样,那么浏览器将此cookie发送到服务器一次 - 但正如我所说,这些数据无法发送到服务器。)

所以,我的问题是:是否有可能不发送带有HTTP请求的cookie?

4 个答案:

答案 0 :(得分:1)

如果您要将此私人数据从服务器发送到浏览器,那么无论如何它都会被曝光。我认为它将被包含在后续请求中并不重要。

一般情况下,永远不会将私有数据放入Cookie中,至少除非加密,否则不会。因此要么a)通过https执行所有这些操作,要么b)加密数据。但我猜测b)将是一个问题,因为你必须在客户端解密。

老实说,听起来你需要在这里重新考虑你的策略。

答案 1 :(得分:0)

查看this page的想法。它可能会给你提示做什么。提供更多信息超出了我的专业知识。

答案 2 :(得分:0)

如果它对该请求有效,我认为你不能强迫浏览器重新发送cookie。

一旦你从中读取数据,也许更好的方法是删除JS中的cookie:

http://techpatterns.com/downloads/javascript_cookies.php

如果你需要在下一个响应中再次将它放回JS中,只需让服务器重新发送它,然后在客户端再次删除它。

我应该说,以这种方式发送你认为是“私人”的数据似乎并不完全适合 - 因为这些信息很容易通过浏览器和浏览器之间的某种类型的代理来查看。服务器。

答案 3 :(得分:0)

正如Richard H所提到的,如果用户知道要查找的位置,则cookie中的数据对用户可见。因此,这不是存储秘密的好地方。

也就是说,我有一个不同的应用程序,该应用程序需要在客户端存储大量数据并遇到相同的问题。 (在我的应用程序中,我需要使该应用程序能够脱机运行并在PC崩溃或网站关闭时保持用户操作。)解决方案非常简单:

1)将cookie数据存储在JavaScript变量中。 (或者已经将其维护在变量中。)

2)删除cookie。这是一个可以删除Cookie的函数:

function cookieErase (name) {
  document.cookie = name+'=; Max-Age=-99999999;path=/';
}

如果您有多个cookie(像我一样),则必须为存储的每个cookie运行以上功能。有代码可以迭代每个cookie,但是实际上,您可能已经知道大型cookie的名称,并且您可能不想删除网站所依赖的其他cookie。

3)像往常一样发送请求。

4)从保存的变量中恢复cookie数据。

以下是您可以使用的一些优化方法:

1)仅在状态为400的错误请求时触发此代码(如果cookie数据太大,您将获得此信息)。有时,您的数据不太大,因此不需要删除。

2)如果不需要立即在超时后恢复cookie数据。这样,您可以发出多个请求,并且仅在有空闲时间时才还原数据。这意味着您的用户在积极使用您的网站时可以获得快速的体验。

3)可以的时候,尝试将任何数据移到服务器端,以减轻客户端/通信的负担。以我为例,在连接恢复时,所有动作都将尽快同步。