javascript - ejs模板引擎上下文中转义和非转义值的含义?
问题描述
<%= 将值输出到模板中(HTML 转义) <%- 将未转义的值输出到模板中
这两行的具体含义是什么“转义”和“未转义”词?
解决方案
让我给你看一个简单的例子。
假设您将数据存储在数据库中,并希望在视图 ejs 页面中呈现它。例子:
x = "<p>This is a paragraph</p>"
现在在您的 ejs 页面中添加这些行
<%= x %>
<%- x %>
你会看到这个
<p>This is a paragraph</p> This is a paragraph
如您所见,<%=
tag 转义了 html 标签,并且不允许它们被翻译。
相反的情况发生在<%-
标签上,其中 html 被翻译(未转义),你会看到你想要的结果。
<%=
出于安全原因,标签会转义该代码。如果您想使用<%-
标签,您必须确定您存储在数据库中的数据并希望稍后呈现它们。
想想这个数据
x = "<script>alert('You are in danger!')</script>"
并尝试以这种方式渲染它
<%- x %>
你猜怎么着!您将看到一条很好的警报消息,通知您如果您不确定您的数据,您将处于危险之中。
希望我对你有所帮助。
推荐阅读
- laravel - 如何在 Laravel 中将用户输出数据的第一个单词大写?
- reactjs - 网络连接检查反应
- dialogflow-es - Dialogflow Intent 在从 Google Assistant 的列表视图键中单击时不匹配,但在以纯文本形式编写时有效
- amazon-web-services - API Gateway HTTP 客户端请求与 IAM 身份验证与 Go
- ios - 无法使用 CloudKit 获取 sharedCloudDatabase 自定义区域中的记录
- c# - unity 无法使用 kinect V2 录制音频
- node.js - 如何在节点js中从服务返回两个以上的值到控制器
- reporting-services - 如何设置月初到昨天日期的默认参数日期
- machine-learning - Firebase MLKit 文本识别在特定情况下无法识别数字
- android - 我的 Android 应用程序被 PlayStore 拒绝