I'm beginner on Flutter web with GitHub Codespaces.
an error expected to be a CORS error occurred while calling http GET API.
i have to work remotely using codespaces, and Terminal environment is Ubuntu 20.04.4 LTS.
chrome is not installed there, so i open the port in code spaces and connect to it through a browser.
please hope you figure it out how can i receive response from my request.
THANKS!!
Code
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;
class TickerController extends GetxController {
RxString text = 'Idle'.obs;
getTicker() async {
text('Start');
var url = Uri.parse('https://api.bithumb.com/public/ticker/ETH_BTC');
var response = await http.get(url);
text(response.body);
}
}
class HomePage extends StatelessWidget {
final TickerController controller;
HomePage({Key? key})
: controller = TickerController(),
super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
ElevatedButton(
child: const Text('Run'),
onPressed: controller.getTicker,
),
Obx(() {
return Text(controller.text.value);
}),
],
),
);
}
}
flutter run -d web-server --web-hostname=0.0.0.0
TRY
Set codespaces port visibility to "public"
Add request headers
var response = await http.get(url, headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': 'true',
'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Amz-Date, Authorization, X-Api-Key, X-Amz-Security-Token, locale',
'Access-Control-Allow-Methods': 'GET, POST',
});
Run with python http.server
from http.server import HTTPServer, SimpleHTTPRequestHandler
class CORSRequestHandler(SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header('Access-Control-Allow-Origin', '*')
self.send_header('Access-Control-Allow-Methods', 'GET, POST')
self.send_header('Cache-Control', 'no-store, no-cache, must-revalidate')
return super(CORSRequestHandler, self).end_headers()
server = HTTPServer(('localhost', 8000), CORSRequestHandler)
server.serve_forever()
and build flutter project flutter build web
,
run python server ../build/web$
python server.py