// 1,添加全局拦截器 cookie.dart
import 'package:dio/dio.dart';
class CookieInterceptor extends Interceptor {
String session = '';
@override
Future onResponse(Response response) async {
if(response.headers['set-cookie']!=null){
session = response.headers['set-cookie'][0].toString().split(";")[0];
}
print("session:"+session);
return response;
}
}
class Global {
...
static CookieInterceptor cookieInterceptor = CookieInterceptor();
...
}
//加载拦截器
dio.interceptors.add(Global.netCache);
dio.interceptors.add(Global.cookieInterceptor);
...
// 2,请求时带上session取可
_options = Options(headers: {"Cookie":Global.cookieInterceptor.session}});
var response = await dio.post<String>(
"apptestsession",
options:_options,
);
print(response);
结果如下:
flutter: session:deafd1c821b865089b22a2a063bc2c76
flutter: {"status":200,"msg":"56"}
flutter: session:deafd1c821b865089b22a2a063bc2c76
flutter: {"status":200,"msg":"56"}
flutter: session:deafd1c821b865089b22a2a063bc2c76
flutter: {"status":200,"msg":"56"}
如果注释掉_options,结果如下:
flutter: session:06b1b3daa1a4d3279db58e3e1218667f
flutter: {"status":200,"msg":"24"}
flutter: session:19be7bcef16fb0d7edb46c769e9b660b
flutter: {"status":200,"msg":"85"}
flutter: session:3466c687b173d85160c3ec346bc7a5f4
flutter: {"status":200,"msg":"95"}
flutter: session:5d258370ff2688ae67b5d6b637420e29
flutter: {"status":200,"msg":"92"}
可见 session失效了.
后端测试代码(基于tp6):
public function testSession(){
$session = session("test")?session("test"):rand(0,100);
session('test',$session);
return app('json')->success($session);
}