Grails的优点:使用原始编解码器生成原始输出

从Grails 2.3开始,所有$ {}表达式输出都会在GSP上自动转义。 这非常有用,因为现在可以转义用户输入,并且转义输入值中的任何HTML或JavaScript,并且浏览器不会将其解释为HTML或JavaScript。 这样做是为了保护我们的Grails应用程序免受跨站点脚本(XSS)攻击。

但是有时候我们确实想在Web浏览器中输出未转义HTML内容。 例如,我们自己生成值,并且我们知道该值是安全的,不能被XSS攻击滥用。 在Grails 2.3中,我们可以在GSP,标签库或控制器中使用新的raw()方法。 该方法将使内容保持不变,并返回要显示的未转义值。 另外,我们可以在要保留其转义的内容上使用encodeAsRaw() 。 最后, encodeAs标记接受RawNone作为属性codec值,并将返回未转义的值。

在下面的示例GSP中,我们显示传递到页面的content模型属性的值。 该值由控制器设置,且为<em>sample</em> content

...
  <h2>Raw output samples</h2>
 
  <table>
      <tr><th>Expression</th><th>Result</th></tr>
      <tr>
          <td>${'${content}'}</td>
          <td>${content}</td>
      </tr>
      <tr>
          <td>${'${raw(content)}'}</td>
          <td>${raw(content)}</td></tr>
      <tr>
          <td>${'${content.encodeAsRaw()}'}</td>
          <td>${content.encodeAsRaw()}</td>
      </tr>
      <tr>
          <td>${'<g:encodeAs codec="Raw">${content}</g:encodeAs>'}</td>
          <td><g:encodeAs codec="Raw">${content}</g:encodeAs></td>
      </tr>
      <tr>
          <td>${'<g:encodeAs codec="None">${content}</g:encodeAs>'}</td>
          <td><g:encodeAs codec="None">${content}</g:encodeAs></td>
      </tr>
  </table>
...

在我们的Web浏览器中,我们看到以下输出:

用Grails 2.3编写的代码。

用Grails 2.3编写的代码。

参考: Grails优点: JDriven博客上的JCG合作伙伴 Hubert Ikkink 用Raw Codec生成了原始输出

翻译自: https://www.javacodegeeks.com/2013/11/grails-goodness-generating-raw-output-with-raw-codec.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值