【问题标题】:Will cookie be available when javascript is disabled at client side?在客户端禁用 javascript 时 cookie 是否可用?
【发布时间】:2010-03-19 22:27:48
【问题描述】:

这是我今天面试时被问到的问题之一,

但我不确定答案。

【问题讨论】:

  • 您已经有 2 个防弹答案。 Cookie 与 JavaScript 无关
  • 您想要证明吗?禁用 js,清理你的 cookie,浏览一下,打开你的 cookie 缓存:满满的 cookie!

标签: javascript http cookies


【解决方案1】:

是的。 Cookie 是一种浏览器/服务器 http 技术,与客户端脚本完全无关。

cookie 的主要(或至少是初始)用途是在服务器端设置一个值并在服务器端读取它。

不过,客户可能会在其浏览器中禁用 cookie。

【讨论】:

  • -1 表示错误答案。服务器可以删除 cookie,但 javascript 也可以。同样,javascript 可以读取页面范围内的 cookie。 Cookies 不设置任何值服务器端。
【解决方案2】:

答案是肯定的。下面的防弹推导:

cookie 作为 HTTP 标头发送 通过网络服务器到网络浏览器和 然后由原样发回 浏览器每次访问时 服务器。


设置 cookie

要访问页面http://www.example.org/index.html,浏览器会连接到服务器www.example.org,向它发送一个如下所示的请求:

GET /index.html HTTP/1.1
Host: www.example.org

服务器通过发送请求的页面进行回复,该页面前面带有一个类似的文本包,称为“HTTP 响应”。此数据包可能包含请求浏览器存储 cookie 的行:

HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value

(content of page)

仅当服务器希望浏览器存储 cookie 时,服务器才会发送 Set-Cookie 行。 Set-Cookie 是请求浏览器存储字符串 name=value 并在以后的所有请求中将其发送回服务器。如果浏览器支持 cookie 并且启用了 cookie,则对同一服务器的每个后续页面请求都将包含 cookie。例如,浏览器通过向服务器发送www.example.org 请求页面http://www.example.org/spec.html,如下所示:

GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: name=value
Accept: */*

来源及延伸阅读:Wikipedia: HTTP Cookie

【讨论】:

    【解决方案3】:

    Cookie 只是一个典型的 HTTP 标头。每当您的浏览器请求某个网站时,它都会发送如下请求标头:

    GET /questions/2476288/will-cookie-be-available-wh... 
    Host: stackoverflow.com
    ....
    Accepted-Languages: ....
    Accepted-Encoding: ....
    ....
    Cookies: cookie1=value1;cookie2=value2
    

    如您所见,cookie 是 HTTP 协议的一部分,而不是 JS,但是 JS 能够创建/删除/修改 cookie。换句话说:cookie 独立于 JS。

    【讨论】:

      【解决方案4】:

      如果使用服务器端脚本设置 cookie,即使禁用 Javascript,网站也可以设置 cookie。

      PHP 示例:

      setcookie('test', 'test');
      

      cookie 然后作为 HTTP 标头发送到站点,除非它们在浏览器中被禁用。是否禁用 Javascript 无关紧要。

      【讨论】:

        【解决方案5】:

        是的(虽然你将无法使用 JS 来设置或读取它)

        【讨论】:

        • 你的证明是什么?cookie需要写入客户端,但是禁用js时允许吗?
        • 您也可以在服务器端编写 cookie。我不知道它们是否相同,但你可以做到。
        猜你喜欢
        • 2012-05-11
        • 1970-01-01
        • 1970-01-01
        • 2012-11-21
        • 2015-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多