51 lines
1.5 KiB
Dart
51 lines
1.5 KiB
Dart
import 'dart:async';
|
|
import 'package:protevus_cors/protevus_cors.dart';
|
|
import 'package:protevus_framework/protevus_framework.dart';
|
|
|
|
Future configureServer(Protevus app) async {
|
|
// The default options will allow CORS for any request.
|
|
// Combined with `fallback`, you can enable CORS application-wide.
|
|
app.fallback(cors());
|
|
|
|
// You can also enable CORS for a single route.
|
|
app.get(
|
|
'/my_api',
|
|
chain([
|
|
cors(),
|
|
(req, res) {
|
|
// Request handling logic here...
|
|
}
|
|
]),
|
|
);
|
|
|
|
// Likewise, you can apply CORS to a group.
|
|
app.chain([cors()]).group('/api', (router) {
|
|
router.get('/version', (req, res) => 'v0');
|
|
});
|
|
|
|
// Of course, you can configure CORS.
|
|
// The following is just a subset of the available options;
|
|
app.fallback(cors(
|
|
CorsOptions(
|
|
origin: 'https://pub.dartlang.org', successStatus: 200, // default 204
|
|
allowedHeaders: ['POST'],
|
|
preflightContinue: false, // default false
|
|
),
|
|
));
|
|
|
|
// You can specify the origin in different ways:
|
|
CorsOptions(origin: 'https://pub.dartlang.org');
|
|
CorsOptions(origin: ['https://example.org', 'http://foo.bar']);
|
|
CorsOptions(origin: RegExp(r'^foo\.[^$]+'));
|
|
CorsOptions(origin: (String s) => s.length == 4);
|
|
|
|
// Lastly, you can dynamically configure CORS:
|
|
app.fallback(dynamicCors((req, res) {
|
|
return CorsOptions(
|
|
origin: [
|
|
req.headers!.value('origin') ?? 'https://pub.dartlang.org',
|
|
RegExp(r'\.com$'),
|
|
],
|
|
);
|
|
}));
|
|
}
|