golang报错:net/http: invalid header field value "Basic ...

yuanshuli11 · · 3317 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

原文地址:golang报错:net/http: invalid header field value "Basic

昨天被这个问题困扰了一天,今天终于找到问题了。
先说一下我这里的流程:

1.从本地文件中读取一个 base64加密过的字符串。然后添加到header上。

auth := getAuth()
//auth 为 Basic XXXXXX  
req.Header.Add("authorization", auth)

但是当执行 client.Do(req)时,会报错:如下图


经过一番"排查",发现当从文件读取字符串时,字符串往往后面会附带一个空行。也就是报错信息后面那些\x00\x00\x00\x00出现的原因了。
解决方法:

str, err := base64.StdEncoding.DecodeString(dataStr)
realStr :=strings.TrimSpace(string(str))
str = []byte(realStr)
dataStr = base64.StdEncoding.EncodeToString(str)

因为我的原信息时base64的所以我这里需要先base64decode, 然后去空行,然后再base64endoe。
如果你的原信息本身就是字符串,可以尝试直接去空行。

然后,问题解决~
完。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3317 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传