[英]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:请按照以下步骤操作:
io_client.dart
in External Libraries->Dart Packages->http-x.xx->src->io_client.dartio_client.dart
io_client.dart
(line 40)io_client.dart
(第 40 行)中找到此代码request.headers.forEach((name, value) {
ioRequest.headers.set(name, value);
});
preserveHeaderCase: true
preserveHeaderCase: true
request.headers.forEach((name, value) {
ioRequest.headers.set(name, value,preserveHeaderCase:true);
});
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.