Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Flutter WEB CORS

Pessoal, estou com uma dificuldade em fazer http request usando flutter WEB, recebo uma excpetion "XMLHttpRequest error" tentei até um get para o google por exemplo e não consegui:

void getHttp() async {
  try {
    var response = await Dio().get('http://www.google.com');
    print(response);
  } catch (e) {
    print(e);``
  }
}
Future<String> sendDonation(Doacao doacao) async {
  var bodyJson = json.encode(doacao);
  print(bodyJson);

  final Map<String, String> mapHeaders = {
    'Content-Type': 'application/json; charset=UTF-8',
    'Access-Control-Allow-Methods': '*',
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Headers': '*'
  };

  final response = await http.post(
      Uri.parse('https://localhost:5001/api/doacao'),
      headers: mapHeaders,
      body: bodyJson);

   if (response.statusCode == 201) {
    return response.toString();
  } else {
    return "Falha ao fazer a doação ${response.statusCode}";
  }
}

tentei estas duas tentativas (com http e dio) porém ambas com erro, se alguém já passou por isso ou poder ajudar agradeço muito!

1 resposta
solução!

Olá Michel! Tudo bem?

Pelo que entendi, você está tendo dificuldades em fazer requisições HTTP usando Flutter WEB, certo? E está recebendo a exceção "XMLHttpRequest error".

Esse erro pode estar ocorrendo devido a uma política de segurança do navegador, chamada Same-Origin Policy, que restringe o acesso a recursos de diferentes origens. Para resolver esse problema, você precisa habilitar o CORS (Cross-Origin Resource Sharing) no servidor que está sendo acessado pela sua aplicação.

No seu código, você já está tentando habilitar o CORS adicionando os headers "Access-Control-Allow-Methods", "Access-Control-Allow-Origin" e "Access-Control-Allow-Headers". Porém, é importante verificar se esses headers estão sendo enviados corretamente pelo servidor.

Além disso, verifique se o endereço do servidor está correto e se a porta está aberta para acesso externo. No exemplo que você postou, o endereço do servidor é "https://localhost:5001/api/doacao". Certifique-se de que o servidor está rodando na sua máquina e que a porta 5001 está aberta para acesso externo.

Por fim, uma dica é utilizar a extensão "Allow CORS: Access-Control-Allow-Origin" no seu navegador para testar se o CORS está habilitado corretamente no servidor.

Espero ter ajudado e bons estudos!