onResponse method

  1. @override
void onResponse(
  1. Response response,
  2. ResponseInterceptorHandler handler
)
override

Called when the response is about to be resolved.

Implementation

@override
void onResponse(Response response, ResponseInterceptorHandler handler) {
  final setCookieHeaders = response.headers[HttpHeaders.setCookieHeader];
  if (setCookieHeaders == null || setCookieHeaders.isEmpty) {
    handler.next(response);
    return;
  }

  final validCookies = <String>[];
  for (final cookie in setCookieHeaders.expand(
    (h) => h.split(_setCookieReg),
  )) {
    if (cookie.isEmpty) continue;
    final trimmed = cookie.trimLeft();
    try {
      Cookie.fromSetCookieValue(trimmed);
      validCookies.add(trimmed);
    } on FormatException {
      log('Filtered invalid Set-Cookie header: $trimmed', name: 'HTTP');
    }
  }
  response.headers.set(HttpHeaders.setCookieHeader, validCookies);

  handler.next(response);
}