Skip to content

Instantly share code, notes, and snippets.

@tecteun
Created August 8, 2022 10:02
Show Gist options
  • Save tecteun/82776cf69805ce59d89f56a173af127b to your computer and use it in GitHub Desktop.
Save tecteun/82776cf69805ce59d89f56a173af127b to your computer and use it in GitHub Desktop.
flutter tool cors patch
diff --git a/packages/flutter_tools/lib/src/isolated/devfs_web.dart b/packages/flutter_tools/lib/src/isolated/devfs_web.dart
index e9fd1d07b6..5e6c648962 100644
--- a/packages/flutter_tools/lib/src/isolated/devfs_web.dart
+++ b/packages/flutter_tools/lib/src/isolated/devfs_web.dart
@@ -17,6 +17,7 @@ import 'package:mime/mime.dart' as mime;
import 'package:package_config/package_config.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:shelf/shelf_io.dart' as shelf;
+import 'package:shelf_proxy/shelf_proxy.dart';
import 'package:vm_service/vm_service.dart' as vm_service;
import '../artifacts.dart';
@@ -297,6 +298,27 @@ expressionCompiler: expressionCompiler,
spawnDds: enableDds,
sdkConfigurationProvider: SdkWebConfigurationProvider(globals.artifacts!),
);
shelf.Pipeline pipeline = const shelf.Pipeline();
+ shelf.Handler customProxyMiddleware(
+ FutureOr<shelf.Response> Function(shelf.Request) innerHandler) {
+ return (shelf.Request request) async {
+ if (request.url.path.startsWith('api')) {
+ String uri =
+ 'https://api.tv.kpn.com/${request.url.path.replaceFirst(RegExp(r'api/?'), '')}';
+ if (request.url.hasQuery) {
+ uri += '?${request.url.query}';
+ }
+ // todo: rewrite headers / credentials;
+ final shelf.Request rewritten = shelf.Request(
+ request.method, Uri.parse(uri),
+ headers: request.headers,
+ context: request.context,
+ body: await request.readAsString());
+ return proxyHandler('https://example-api-service.com/')(rewritten);
+ }
+ return innerHandler(request);
+ };
+ }
+ pipeline = pipeline.addMiddleware(customProxyMiddleware);
if (enableDwds) {
pipeline = pipeline.addMiddleware(middleware);
pipeline = pipeline.addMiddleware(dwds.middleware);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment