簡體   English   中英

Flutter 中的 401 未授權錯誤,但在 Postman 中工作正常

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

我有 Laravel 端點。 登錄、注冊和主頁(getData() 將在其中工作)。

寄存器 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',
      };

一個令牌在這里打印: 這是令牌

在瀏覽器中點擊端點的結果。 這是我要訪問的標題

請幫忙。

請傳遞令牌為

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

http庫會自動將 header 名稱轉換為小寫,可能您的服務器不接受小寫 header 名稱。 請按照以下步驟操作:

  1. External Libraries->Dart Packages->http-x.xx->src->io_client.dart中找到io_client.dart
  2. io_client.dart (第 40 行)中找到此代碼
request.headers.forEach((name, value) {
  ioRequest.headers.set(name, value);
});
  1. 添加preserveHeaderCase: true
request.headers.forEach((name, value) {
  ioRequest.headers.set(name, value,preserveHeaderCase:true);
});
  1. 清理您的項目並重建

如果您正在制作 flutter web 項目,請在檢查 >> 控制台檢查,拒絕設置不安全 header“內容長度”是否正在打印。 如果它發生了,那么在你的代碼中你有 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM