Java Grails Base64对解码时格式错误的授权标头进行解码

Java Grails Base64对解码时格式错误的授权标头进行解码,java,grails,encoding,groovy,base64,Java,Grails,Encoding,Groovy,Base64,我有一个grails控制器,base64解码授权头。我使用CURL从一个PHP脚本发送了这个 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "testindia01@test.com:india123"); 我的grails控制台日志显示: Authorization raw: Basic dGVzdGluZGlhMDFAdGVzdC5jb206aW5kaWExMjM=

我有一个grails控制器,base64解码授权头。我使用CURL从一个PHP脚本发送了这个

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "testindia01@test.com:india123");
我的grails控制台日志显示:

Authorization raw: Basic dGVzdGluZGlhMDFAdGVzdC5jb206aW5kaWExMjM=, isBase64: true
Authorization decoded: ´"q—ïÕ—•πë•Ñ¿≈—ïÕ–πçΩ¥È•πë•Ñƒ»Ã
在上面的例子中,我使用的是Commons Base64类,但是使用Groovy内置的decodeBase64会产生相同的结果

输入的授权是正确的。如果我复制它并将其通过PHP的ecode,那么它将正确解码

echo base64_decode('dGVzdGluZGlhMDFAdGVzdC5jb206aW5kaWExMjM=');
如果我将字符串直接复制到控制器中,例如

def decode = new String(Base64.encodeBase64("dGVzdGluZGlhMDFAdGVzdC5jb206aW5kaWExMjM="))
那么这也能正确解码

我通过请求获取标题

def auth = request.getHeader("Authorization")
我测试它是一个有效的base64字符串

Base64.isBase64(auth)
只是解码失败了。我试过在解码时改变编码

def decoded=新字符串(auth.decodeBase64(),“UTF-8”)

以及其他编码,如ISO-8859-1和Windows-1252,但每次都返回不同的格式错误的字符串

我还尝试在CURL请求上手动设置Accept编码

我没有主意了:(

这是因为“Basic”已作为getHeader返回值的一部分包含在内。如果我去掉它,它会工作。Base64.isBase64只检查Base64字母表中的字符,因此“Basic”必须是