我有一个richtext组件,我输入了#34; foo"到richtext组件,它生成
<p>foo</p>
,我尝试使用以下代码将此生成的内容从JSP传递给JS。
<script>
var jsvariable = '<%=jspvariable%>'
</script>
以上行抛出&#34;未终止的字符串文字&#34;错误,因为JS变量包含
ptagstarts foo ptagends
我在JS中使用了这个值,因为我在其他页面中也需要这个变量。 我可以知道如何删除此错误。
答案 0 :(得分:1)
根据您所写的内容,似乎您的 jspvariable 字符串</script>
。 Html解析器将其视为脚本块的结尾,并且您获得了无效的脚本阻止。
您可以查看您的网页来源以确定我是对的。
正如托马斯所说,你可以逃避你的内容。但只要这个内容由用户提供,我就会使用XssApi来防止xss攻击。
所以它会是这样的:
var jsvariable = '<%=xssApi.encodeForJSString(jspvariable)%>'
或者:
var jsvariable = '<%=xssApi.filterHTML(jspvariable)%>'
在第一种情况下,您将从richtext组件中获取<script>
块到您的js变量中。它将被编码,你不会得到这个错误,但我认为你不需要它。
在第二种情况下,您应该只获得组件的文本值。
更新1
另外,正如我在评论中写的那样,很高兴看到你从richtext组件中提取内容的方式,因为我认为,有一种更好的方法可以做到这一点,所以你只能得到没有其他内容的文本