我在使用JWT令牌的Flutter REST API中面临一些问题
这里报头认证没有正确通过。但它在Postman
中运行良好**Example Code:**
String url = "project URL";
String token = "generated jwt token";
var headers = {
'Authorization': token,
'Cookie': 'ci_session=u17u9effeqk5fdhl1eqdh4jsmu3o3v29'
};
var request = http.Request('GET', Uri.parse(url));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
如果我尝试通过在后端删除JWT令牌而不使用它,它会正常工作。但是我需要使用JWT。
谁能帮忙解决这个问题?
我使用dio包来处理相同的…
// Import dio package
Future<void> function() async {
Dio dio = new Dio();
String url = 'example.com';
try {
final response = await dio.post(
url,
options: Options(
headers: {'Authorization': 'Bearer $userToken'}, //This is where you define your header and provide jwt token
),
);
} on DioError catch (error) {
if (error.response!.statusCode == 401) {
print(error.response.toString());
throw Error();
}
print(error);
throw Error();
}
}
}
这个包可以在这里找到https://pub.dev/packages/dio
如有疑问,请指正
这里最有可能的问题是您在头文件中给出的值。
对于承载令牌,授权头中给出的值必须是Bearer
,后跟令牌的值。如果你没有在你的后端实现一些特定的/自制的授权功能,这必须是期望接收到的。
尝试用
替换'Authorization': token,
'Authorization': `Bearer $token`,
,它应该按预期工作。