Javascript Ember.js:查询参数被操纵了吗?

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({

我正在使用ember的查询参数功能来验证我服务器上的帐户是否具有激活url

URL如下所示:

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的回复。我也同意你上面的解决方案。