对包含<script>标记的JSON进行字符串化

时间:2018-03-08 09:54:59

标签: javascript pug

我正在尝试通过对该状态进行字符串化并将其存储在全局变量中来将初始状态从服务器传递到客户端。下面是我正在做的简化版本。

&#xA;&#xA;
  // home.tsx&#xA; res.render('home',{appState:{script :'&lt; script&gt;&lt; / script&gt;'}});&#xA;&#xA; // home.pug&#xA; doctype html&#xA; html&#xA;头&#XA; 。脚本&#XA; window .__ initialState__ =!{JSON.stringify(appState)};&#xA;体&#XA; #root&#xA;  
&#xA;&#xA;

可悲的是,结果如下所示

&#xA;&#xA;
 &lt;脚本&gt; window .__ initialState__ = {“script”:“&lt; script&gt;&lt; / script&gt;&#xA;  
&#xA;&#xA;

这是无效的Javascript。我的结局是将服务器的appState对象分配给window .__ initialState __。

&#xA;

1 个答案:

答案 0 :(得分:1)

代码的第一部分非常令人困惑。但是,作为一般规则,您应始终将从服务器传递到客户端的任何HTML编码为字符串。

因此,您需要更改生成以下行的服务器代码部分:

let scriptObject = {script: '<script></script>'};

到此(假设你正在使用pug和node.js):

var htmlencode = require('htmlencode');
let scriptObject = {script: htmlencode.htmlEncode('<script></script>')};