简体   繁体   English

Flutter 中的 401 未授权错误,但在 Postman 中工作正常

[英]401 unauthorized error in Flutter but works fine in Postman

I have Laravel endpoints.我有 Laravel 端点。 Login, Register and Home(where getData() will be working).登录、注册和主页(getData() 将在其中工作)。

the register API and Login API is working fine but the problem is with the HomePage API where it will not ask for user details, it's a get method where it will return the details upon checking whether the user is logged-In or not.寄存器 API 和登录 API 工作正常,但问题出在主页 API 上,它不会询问用户详细信息,这是一个获取方法,它会在检查用户是否登录时返回详细信息。

  var token;

  _getKey() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    token = prefs.getString('key');
    print("this is Key $token");
  }
saveKey(String key) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('key', key);
  }
  getData() async {
    await _getCSRF();
    await _getKey();
    print(_setAuthHeaders());
    String uri = "$baseUrlUser/user_bal";
    try {
      return await http.get(Uri.parse(uri), headers: _setAuthHeaders());
    } catch (e) {
      return e;
    }
  }

  _setAuthHeaders() => {
        'Accept': 'application/json',
        'Connection': 'keep-alive',
        'Authorization': 'Bearer $token',
      };

A token is printing here:一个令牌在这里打印: 这是令牌

result of hitting the endpoint in the browser.在浏览器中点击端点的结果。 这是我要访问的标题

Please help.请帮忙。

please pass token as请传递令牌为

'Authorization': 'Bearer $token;',
 _setAuthHeaders() => {
        'Accept': 'application/json',
        'Connection': 'keep-alive',
        'Authorization': 'Bearer $token',
      };

http library automatically converts the header name to lower-case, may your server not accepting lower-case header name. http库会自动将 header 名称转换为小写,可能您的服务器不接受小写 header 名称。 Follow this step:请按照以下步骤操作:

  1. Find io_client.dart in External Libraries->Dart Packages->http-x.xx->src->io_client.dartExternal Libraries->Dart Packages->http-x.xx->src->io_client.dart中找到io_client.dart
  2. Find this code inside io_client.dart (line 40)io_client.dart (第 40 行)中找到此代码
request.headers.forEach((name, value) {
  ioRequest.headers.set(name, value);
});
  1. Add preserveHeaderCase: true添加preserveHeaderCase: true
request.headers.forEach((name, value) {
  ioRequest.headers.set(name, value,preserveHeaderCase:true);
});
  1. Clean your project and rebuild清理您的项目并重建

If you are making flutter web project then please check at Inspect >> Console, that Refused to set unsafe header "content-length" is printing or not.如果您正在制作 flutter web 项目,请在检查 >> 控制台检查,拒绝设置不安全 header“内容长度”是否正在打印。 If its happening then in your code where you have api setup如果它发生了,那么在你的代码中你有 api 设置

class ApiServiceProvider extends GetConnect {}
@override
  void onInit() {
    if (kIsWeb) {
      httpClient.addRequestModifier<void>((request) {
        request.headers.remove('user-agent');
        request.headers.remove('content-length');
        return request;
      });
    }
    super.onInit();
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Laravel API 端点“401 Unauthorized”在服务器上但在 Localhost 上工作正常 - Laravel API Endpoint "401 Unauthorized" on Server But Works Fine On Localhost Laravel 5 来自 Unity WWW 请求的登录 401 未经授权 JWT(在浏览器和 Postman 中工作) - Laravel 5 Login 401 from Unity WWW request Unauthorized JWT (Works in browser & Postman) Laravel Passport 和 Angular 在 api/login 路由上给我未经授权但在邮递员上工作正常? - Laravel Passport and Angular giving me unauthorized on api/login route but works fine on postman? Laravel Passport 在 PostMan 上工作正常,但在反应原生应用程序中返回 401? - Laravel Passport works fine on PostMan, but returns 401 inside the react native app? Axios POST 到 Laravel API 导致 419 错误,但在邮递员中工作正常 - Axios POST to Laravel API results in 419 error but works fine in postman Guzzle中API端点上的400错误,在浏览器和邮递员中可以正常使用 - 400 Error on API endpoint in Guzzle that works fine in Browser & Postman Laravel 6 护照中的未经授权的 401 错误 - Unauthorized 401 error in laravel 6 passport 在 Laravel 7 中获得“401”未经授权的错误 - Getting "401" Unauthorized error in Laravel 7 角度laravel未经授权的401错误 - angular laravel unauthorized 401 error Laravel DataTables处理401未经授权的错误 - Laravel DataTables handle 401 Unauthorized error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM