如何在js中轻松制作受保护的变量?
Posted
技术标签:
【中文标题】如何在js中轻松制作受保护的变量?【英文标题】:How to easily make protected variable in js? 【发布时间】:2021-09-17 22:48:43 【问题描述】:我用它从某个站点获取数据:
const key = 'secret_key';
router.get('/get', (req, res) =>
axios.get(url,
headers:
'Key': key,
)
.then(response =>
res.send(response)
)
.catch(error => res.status(500).send(error))
);
当出现错误时,key
对用户可见。我想使用受保护的或私有的,但我不能。在其他问题中,有很长很复杂的函数来保护变量。最简单的方法是什么?
【问题讨论】:
“对用户可见”是什么意思?任何人都可以打开 devtools 并查看代码中的任何数据。你唯一能做的就是打乱你的代码,让它很难阅读,但它不会隐藏数据。您只能“保护”您的变量免受在同一页面上执行的其他脚本的影响,而不是用户。 @vanowm 有没有其他方法可以让它不可见?还是只有这个?如果它是私有或受保护的变量,它不会改变任何东西吗? @Weronika 这看起来像 NodeJS。是吗?如果是这样,那么请这样标记问题。 (在这种情况下,该值不会通过浏览器 DevTools 可见。) @Weronika 我指的是 vanowm 的 cmets。该用户可以访问发送到用户浏览器的所有代码/html/javascript,并且可以查看/更改。在 NodeJS 服务器上运行的 JavaScript 在服务器上执行,不会发送到用户的浏览器。因此,用户将无法获取此值(除非出现您所说的错误)。 @Weronika 我对 NodeJS 不够熟悉,无法保证任何事情,所以不要相信我的话,但这确实有道理。.send(error)
可能会将错误发送给用户,因此他们能够准确地看到出了什么问题。这类信息对开发人员很有用,但您不想告诉外界他们需要知道的更多信息。 (通常您想将一些信息写入日志文件,以便以后可以访问这些信息,但我不确定它在 NodeJS 中是如何工作的。
【参考方案1】:
感谢@Ivar,以另一种方式解决。
之前:
.catch(error => res.status(500).send(error))
之后:
.catch(error => res.status(500).send("Internal Server Error"))
【讨论】:
以上是关于如何在js中轻松制作受保护的变量?的主要内容,如果未能解决你的问题,请参考以下文章