我正在构建一个单页面的
AJAX应用程序,并希望在某些情况下在URL哈希(#)之后将状态存储在
JSON中.我已经看到其他几个网站都这样做了,但我希望在我努力实现这一点时能得到一些最佳实践,技巧或陷阱.
解决方法
我实际上建议不要将数据封装到json中,然后将其放入散列中.
原因是JSON本身需要大量标记,并且实际上会打开一些安全漏洞,因为您必须稍后直接从用户那里获得代码.
原因是JSON本身需要大量标记,并且实际上会打开一些安全漏洞,因为您必须稍后直接从用户那里获得代码.
作为一个更好的选择,我建议使用x-www-form-urlencoded作为封装.例如,如果这是您的状态对象:
var stateObject = { userName: 'John Doe',age: 31 }
然后你会创建一个这样的哈希片段:
// Create an array to build the output string. var hashPartBuffer = []; for (var k in stateObject) { hashPartBuffer.push( encodeURIComponent(k),'=',encodeURIComponent(stateObject[k]),'&'); } if (hashPartBuffer.length) { // Remove the last element from the string buffer // which is '&'. hashPartBuffer.pop(); } var hashPartString = hashPartBuffer.join(''); // This will Now be 'userName=John%20Doe&age=31'
然后你将通过以下方式解析它:
var hashPartString = 'userName=John%20Doe&age=31'; var pairs = hashPartString.split(/&/); var stateObject = {}; for (var i = 0; i < pairs.length; i++) { var keyvalue = pairs.split(/=/); // Validate that this has the right structure. if (keyvalue.length == 2) { stateObject[keyvalue[0]] = keyvalue[1]; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。