cookie是向客户端提供来自服务器的指令来执行一些js代码的唯一方法吗?
Are cookies the only way to give a client an instruction from a server to execute some js code?
或者换句话说:如何从服务器向客户端发送消息以执行页面上的一些js代码?
这不是一个Ajax请求,它是一个普通的GET
浏览器-服务器请求。
比方说,我在我的应用程序的前端javascript文件中有这段代码:
if( condition_1 ) {
FB.getLoginStatus(...)
}
else if( condition_2 ) {
PayPal.getLoginStatus(...)
}
else {
do smth else...
}
所以我想发送那些condition_1
或condition_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++那样通过编写解释器来提高逻辑级别)。
相关文章:
- 为什么indexOf在这个js代码中不起作用
- js代码从jQuery转换为原生代码
- JS代码中的减号
- 谷歌地图Api和JS代码不工作
- HTML 5 和 3.js 代码不会在网页上显示任何内容
- 为什么这个JS代码打印未定义
- JS代码在jsbin中有效,在jsfiddle或Chrome/Safari中无效
- 页面加载后加载简单的JS代码
- 扩展JS代码
- 如何使用js代码转发reactjs路由器
- 用js代码重新定位文本
- 即使被信号处理程序中断,node.js代码也会一直运行到完成吗
- JS代码使IE9和Safari冻结,在Opera中不起作用
- 分析JS代码以在客户端获取cookie
- 改进js代码以删除全局变量和函数
- 对php文件的Ajax调用返回该文件中的JS代码,而不是执行它
- 在单独的上下文中运行 js 代码并访问其全局变量
- 这个 ajax.js 代码有什么问题
- 如何使用 GetValues 使用 Jint 运行 Js 代码
- JS代码有什么问题,让我知道代码是否可以改进