Javascript Ember.js:查询参数被操纵了吗?
我正在使用ember的查询参数功能来验证我服务器上的帐户是否具有激活url URL如下所示:Javascript Ember.js:查询参数被操纵了吗?,javascript,rest,url,ember.js,base64,Javascript,Rest,Url,Ember.js,Base64,我正在使用ember的查询参数功能来验证我服务器上的帐户是否具有激活url URL如下所示: http://myapp/activation/?id=ZDE2ZTE2MTItYTFmMC00Zjk1LWJhZGUtMGYwNWE1ZDA2ZmRl&code=OGQ4MTQyYzQ5MTVjMGIxNGY4ZDk4MDYxMWRiZGU4N2EzMjY3ZDRhZA== 来自服务器的参数是Base64编码的 我的activation.js控制器在某处执行以下操作: Em.$.ajax({
http://myapp/activation/?id=ZDE2ZTE2MTItYTFmMC00Zjk1LWJhZGUtMGYwNWE1ZDA2ZmRl&code=OGQ4MTQyYzQ5MTVjMGIxNGY4ZDk4MDYxMWRiZGU4N2EzMjY3ZDRhZA==
来自服务器的参数是Base64编码的
我的activation.js控制器在某处执行以下操作:
Em.$.ajax({
url: "http://localhost:8080/myapp/api/activation",
type: "POST",
contentType: "application/json",
dataType: "json",
data: JSON.stringify({
id: this.get("id"),
code: this.get("code")
}),
success: function () {
// ...
},
error: function () {
// ...
}
服务器接收到正确的id,但最后代码略有不同。代码参数的尾部==
字符被截断
我可以通过手动附加它们来解决此问题:
data: JSON.stringify({
id: this.get("id"),
code: this.get("code") + "=="
}),
这看起来不太可靠
有趣的是,如果我解码字符串:console.log(atob(this.get(“code”))代码>结果正确,包含尾随字符
我很困惑。有人能告诉我是否有错误或者我做错了什么吗
更新:
这看起来很愚蠢,但似乎是一个可靠的解决办法:
data: JSON.stringify({
id: this.get("id"),
code: btoa(atob(this.get("code")))
}),
“=”字符用作base64编码的填充(编码字符串的长度“必须”是4的倍数)。但是,如果使用的解码算法处理无填充字符串,则不必对字符串做任何处理。就你而言
OGQ4MTQyYzQ5MTVjMGIxNGY4ZDk4MDYxMWRiZGU4N2EzMjY3ZDRhZA==
与
OGQ4MTQyYzQ5MTVjMGIxNGY4ZDk4MDYxMWRiZGU4N2EzMjY3ZDRhZA
你可以在这里检查一下你好,Doe,我面临着一个类似的问题,你对此有解决办法吗。@当你这样做时,ember的行为是正确的-等号需要编码。我在上面称之为“可靠的解决方案”,实际上是可靠的解决方案。感谢Doe的回复。我也同意你上面的解决方案。