Android 如何修复';AuthFailureError';截击
我已经创建了一个android应用程序,可以从服务器获取一些文本并以列表格式显示。就像电报中的频道。 我使用后台服务在服务器上每隔60秒检查一次新邮件。 在对该bg服务进行第一次测试后,一切正常,新消息通知工作正常,但 2或3天后,截击请求总是(在同一设备上)抛出AuthFailureError 现在它可以在新设备上运行,但只运行几天。 我的服务器似乎在多次请求后阻塞了客户端 服务器是LinuxCPanel 我已经检查了Volley请求类上的getHeaders方法:Android 如何修复';AuthFailureError';截击,android,httprequest,android-volley,Android,Httprequest,Android Volley,我已经创建了一个android应用程序,可以从服务器获取一些文本并以列表格式显示。就像电报中的频道。 我使用后台服务在服务器上每隔60秒检查一次新邮件。 在对该bg服务进行第一次测试后,一切正常,新消息通知工作正常,但 2或3天后,截击请求总是(在同一设备上)抛出AuthFailureError 现在它可以在新设备上运行,但只运行几天。 我的服务器似乎在多次请求后阻塞了客户端 服务器是LinuxCPanel 我已经检查了Volley请求类上的getHeaders方法: @Override pub
@Override
public Map getHeaders() throws AuthFailureError {
Log.i("MYTAG", "Hey!");
HashMap headers = new HashMap();
headers.put("Authorization", "Bearer " + DataCenter.loadToken(context));
return headers;
}
但是它没有记录任何东西。几天后,我终于解决了它。
此问题由两部分组成: 1) 由于一些未知的原因,apache没有将“Authorization”头传递到$\u服务器; 所以你有两个选择: a) 直接从apache服务器获取标题:
$headers = apache_request_headers();
$authHeader = $headers['Authorization'];
b) 将此行添加到.htaccess
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
我两者都用过
2)仅当身份验证失败时才设置“WWW-Authenticate”头。
之前:
<?php
header("WWW-Authenticate: Bearer realm=\"example\", token_type=\"JWT\"");
if($AuthorizationResult){
http_response_code(200);
}
else{
http_response_code(401);
}
?>
之后:
<?php
if($AuthorizationResult){
http_response_code(200);
}
else{
http_response_code(401);
header("WWW-Authenticate: Bearer realm=\"example\", token_type=\"JWT\"");
}
?>