cookie是向客户端提供来自服务器的指令来执行一些js代码的唯一方法吗?

Are cookies the only way to give a client an instruction from a server to execute some js code?

本文关键字:js 代码 唯一 方法 执行 指令 客户端 cookie 服务器      更新时间:2023-09-26

或者换句话说:如何从服务器向客户端发送消息以执行页面上的一些js代码?

这不是一个Ajax请求,它是一个普通的GET浏览器-服务器请求。

比方说,我在我的应用程序的前端javascript文件中有这段代码:

if( condition_1 ) {
    FB.getLoginStatus(...)
}
else if( condition_2 ) {
    PayPal.getLoginStatus(...)
}
else {
   do smth else...
}

所以我想发送那些condition_1condition_2指令以及服务器的响应。这不是Ajax请求。这是一个从浏览器到服务器的普通GET请求。

现在我脑子里只有饼干

1)服务器接收到来自浏览器的GET请求。

2)我读饼干。如果请求中没有特定的cookie,则设置condition_1,否则设置condition_2 cookie:

if(req.cookies["foo"] == "foo") {
    res.cookies("foo", "condition_1")
       .status(200)
       .send()
       .end();
}
else if(req.cookies["foo"] == "bar") {
    res.cookies("foo", "condition_2")
       .status(200)
       .send()
       .end();
}

3)服务器向客户端发送200响应。

现在我在浏览器中检查这些cookie(为了简单起见,我使用document.cookie.foo):

if( document.cookie.foo == 'condition_1' ) {
    FB.getLoginStatus(...)
}
else if( document.cookie.foo == 'condition_2' ) {
    PayPal.getLoginStatus(...)
}
else {
   do smth else...
}

我的问题是,在这种情况下饼干是唯一的方法吗?指示客户端代码执行一些条件

cookie存储在浏览器中,并随每个请求发送回服务器。它用于存储客户端设置,而不是用于从服务器发送信息。

如果你正在使用一些服务器端技术,可以在响应中设置cookie,那么为什么不使用它来发送你想要执行的脚本块?

你让事情变得更复杂,他们需要:Javascript提供eval

服务器可以简单地用一个表达式/语句回复一个字符串,以便在浏览器上下文中求值。它的开发水平和Lisp不一样……但即使在Javascript中,"数据"也可以直接成为"代码"(不需要像Java或c++那样通过编写解释器来提高逻辑级别)。