corsHeaders function
Middleware
corsHeaders({
- Map<
String, String> ? headers, - OriginChecker originChecker = originAllowAll,
Implementation
Middleware corsHeaders({
Map<String, String>? headers,
OriginChecker originChecker = originAllowAll,
}) {
final headersAll = headers?.map((key, value) => MapEntry(key, [value]));
return (Handler handler) {
return (Request request) async {
final origin = request.headers[ORIGIN];
if (origin == null || !originChecker(origin)) {
return handler(request);
}
final _headers = <String, List<String>>{
..._defaultHeadersAll,
...?headersAll,
};
final userProvidedAccessControlAllowOrigin =
headers?[ACCESS_CONTROL_ALLOW_ORIGIN];
if (userProvidedAccessControlAllowOrigin != null) {
_headers[ACCESS_CONTROL_ALLOW_ORIGIN] = [
userProvidedAccessControlAllowOrigin
];
_headers[VARY] = ['Origin'];
} else {
_headers[ACCESS_CONTROL_ALLOW_ORIGIN] = [origin];
}
if (request.method == 'OPTIONS') {
return Response.ok(null, headers: _headers);
}
final response = await handler(request);
return response.change(headers: {
..._headers,
...response.headersAll,
});
};
};
}