将JavaScript数据传递到页面,最佳做法是什么?

将JavaScript数据传递到页面,最佳做法是什么?,javascript,Javascript,我正在编写一个web应用程序,需要在页面加载时将一些用户数据传递给JS应用程序。我已经确定了3种不同的方法,我想知道与此相关的最佳实践是什么。数据不是特别敏感,但最好是比其他数据更安全 1.异步加载数据 使用类似于$.ajax()的方法。我不喜欢这种方法,因为它通常会导致整个“加载”现象,我希望避免这种情况。准备好数据后再单独打电话 2.将数据刻录到页面中。 这可以通过这样做来实现 <script> var userdata = { somekey: somevalue }

我正在编写一个web应用程序,需要在页面加载时将一些用户数据传递给JS应用程序。我已经确定了3种不同的方法,我想知道与此相关的最佳实践是什么。数据不是特别敏感,但最好是比其他数据更安全

1.异步加载数据 使用类似于
$.ajax()
的方法。我不喜欢这种方法,因为它通常会导致整个“加载”现象,我希望避免这种情况。准备好数据后再单独打电话

2.将数据刻录到页面中。 这可以通过这样做来实现

<script>
    var userdata = { somekey: somevalue }
</script>
<script src="server/getdata"></script>

var userdata={somekey:somevalue}
3.使用脚本标记发出请求 这可以通过这样做来实现

<script>
    var userdata = { somekey: somevalue }
</script>
<script src="server/getdata"></script>

我知道这有点像第一种方法,因为它向服务器发出另一个get请求


我的问题是,上述三种方法中的任何一种在安全性方面是不同的,还是更好。我知道这三种方法都不是特别安全的,特别是因为它们都可以很容易地被嗅探到,但是上面的任何一种方法比另外两种方法更好吗?为什么?

在您给出的方法中,2是最好的,原因就在于您所说的。但是,我不会为它添加新的全局变量。相反,我会:

<script type="text/javascript" src="application.js"></script>
具有相同优点的另外两种方法是:

  • 。这些是
    数据-
    数据。您可以放置与特定元素关联的任意数据(有时特定元素是有意义的;否则,您可以使用
    body
  • 隐藏的表单字段

  • 谢谢你证实我的想法。我的第一反应是,选项2将立即在源代码中可见。另外,其他选项也同样容易受到攻击,除非SSL,否则没有好的解决方案。欣赏it@johncch,则无法(甚至SSL)向用户隐藏数据。如果您始终使用SSL,所有的解决方案都会对窃听者隐藏它。