在颤振代码中添加授权标头会返回错误响应,而相同的请求在邮递员中工作正常

Posted

技术标签:

【中文标题】在颤振代码中添加授权标头会返回错误响应,而相同的请求在邮递员中工作正常【英文标题】:Adding the Authorization header in the flutter code gives back an error response whereas the same request works fine in the postman 【发布时间】:2021-11-01 14:27:08 【问题描述】:

我在颤振中遇到一个奇怪的错误,只需添加一个授权标头就可以让我出错。

我目前遇到的问题,

  postData(data, apiUrl) async 
    var fullUrl = _url + apiUrl;

    var at = await _accessToken;
    print('access token is $at');

    return await http.post(
      Uri.parse(fullUrl),
      body: jsonEncode(data),
      encoding: Encoding.getByName("utf-8"),
      headers: 
        'Authorization': 'Bearer $at',    <---------------- Adding this line of code prints an error in the console
        'Content-Type': 'application/json',
        'Accept': 'application/json'
      ,
    );

在我的代码中,如果我在上面的代码中添加我用箭头指向的 Authorization 标头,我会在控制台上收到一条错误消息,

D/libc-netbsd(32217): [getaddrinfo]: mtk 主机名=host_name_i_provided;服务名称=(空); 缓存模式=(空),netid=0;标记=0; app_uid=10217; ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0 D/libc-netbsd(32217): getaddrinfo: host_name_i_provided 从代理获取结果 >> E/颤振(32217):[错误:颤振/lib/ui/ui_dart_state.cc(199)] 未处理的异常:FormatException:意外字符(在第 3 行, 字符 1) E/flutter (32217): E/flutter (32217): ^ E/颤动​​(32217):E/颤动(32217):#0 _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1404:5) E/flutter (32217): #1 _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1271:9) E/flutter (32217): #2 _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:936:22) E/flutter (32217): #3 _parseJson (dart:convert-patch/convert_patch.dart:40:10) E/flutter (32217): #4 JsonDecoder.convert (dart:convert/json.dart:506:36) E/flutter (32217): #5 JsonCodec.decode (dart:convert/json.dart:157:41) E/flutter (32217): #6 _RescueMeFormPageState.submitData(包:redcross/Pages/Disaster/rescue_me_form_page.dart:57:21) E/颤动​​(32217):E/颤动(32217):

但如果我删除该标头,我会得到以下有效响应,

I/flutter (32217):状态:400,数据:代码:TokenException,消息: 未找到授权令牌

我不知道为什么会出现此错误。

我想指出的还有一些事情是,$at 变量包含正确的访问令牌。我通过添加打印语句验证了这一点。所以'Authorization': 'Bearer $at',这行代码是有效的。

另外,如果我向邮递员提出同样的请求,我会得到有效的回复。

有人可以帮我找出解决此错误的方法吗?谢谢.....

【问题讨论】:

【参考方案1】:

问题不在于令牌,而在于 JSON 解析检查您解析响应的代码。

【讨论】:

以上是关于在颤振代码中添加授权标头会返回错误响应,而相同的请求在邮递员中工作正常的主要内容,如果未能解决你的问题,请参考以下文章

添加授权标头时出现CORS错误

AWS API Gateway:如果响应未授权,则添加标头

使用授权标头的react-native fetch有时会返回401

颤振错误使用jwt令牌授权

Nginx 添加标头 PHP FPM 返回错误

如何使用浏览器发送授权标头