我正在尝试使用把手在注册后发送给用户的电子邮件html模板中呈现网址以进行确认步骤。
链接汇编如下:
innerHTML
使用的链接采用以下格式:
responseText
每次发送电子邮件时,链接都会被篡改并变为:
var data = {
user: {
email: body.email,
token: 'tmpToken',
link: '/confirm?email=' + body.email + '&token=' + 'tmpToken'
},
appName: 'XYZ'
};
,非常讨厌。
我在nodejs中使用把手来使用把手引用html中的url
"/confirm?email=x&token=y"
。
我尝试使用Handlebars助手:
"confirm/?email=y&token=y"
关于为什么字符串中的问号被转换为“/?”的任何想法?
答案 0 :(得分:0)
此代码基于您提供的代码,不会注入/
。所以在某个地方可能会发生其他事情。但这可以按预期工作:
var Handlebars = require('handlebars');
var source = '<a href="{{{link_to}}}" style="border: 0;" target="_blank">';
var template = Handlebars.compile(source);
var data = {
user: {
email: 'foo@example.com',
token: 'tmpToken',
link: '/confirm?email=' + 'foo@example.com' + '&token=' + 'tmpToken'
},
appName: 'XYZ'
};
Handlebars.registerHelper('link_to', function() {
return new Handlebars.SafeString(Handlebars.Utils.escapeExpression(data.user.link));
});
var result = template(data);
console.log(result); // logs: <a href="/confirm?email=foo@example.com&token=tmpToken" style="border: 0;" target="_blank">