gpt4 book ai didi

javascript - 通过AJAX发送js函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:12 24 4
gpt4 key购买 nike

我想将“javascript 函数”传递到我的后端并且我正在使用 ajax。这是一个简短的例子:

var data = { 
prop: function (e) { alert(e) }
};
ajax.(..., data: data, dataType: "json")...

这会自动从数据中删除 prop,因为它是一个函数。

如何使用 json 将此函数传递到我的后端?不将其转换为字符串。

最佳答案

您确实不想从客户端向服务器发送函数并在服务器上执行该函数,而不是在没有很多安全检查的情况下。想一想,记住您不能相信从客户那里收到的任何东西。另外,服务器应该已经知道如何做它需要做的事情;通常你要做的是发送一个命令(一个字符串)告诉它使用那个函数(它已经有了,因此你可以信任)。

但是,如果您仍然想继续这样做:

Without converting to string.

你不能。唯一的方法是将函数作为源代码或其他可以通过 HTTP 发送的形式发送,HTTP 最终是一种基于文本的协议(protocol)。所以你会发送源代码,或者你会把它编译成你自己设计的某种字节码然后发送(转换成字符串,可能是 Base64 或类似的),等等。

从 ES2015 开始,普通函数需要有一个采用有效函数声明或表达式形式的 toString,因此您可以发送该字符串:

var dataToSend = {prop: data.prop.toString()};
ajax(..., data: JSON.stringify(dataToSend), dataType: "json")

然后服务器必须编译该字符串并执行结果。 JavaScript 提供了执行此操作的方法 (eval),但同样:执行从客户端收到的代码非常危险。做非常危险的事情需要先做很多安全检查。

关于javascript - 通过AJAX发送js函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41545162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com