0
votes

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


ERROR

Browser console error image