1
resposta

DartWeB CORS

Ao habilitar o projeto para web recebi a mensagem no console do navegador informando que minha requisição nao continha os cabeçalhos de: 'Access-Control-Allow-Methods': '', 'Access-Control-Allow-Origin': '', 'Access-Control-Allow-Headers': '*'

Porem, adicionei os cabeçalhos utilizando maps. Desta forma:

Future<List<Transaction>> findAll() async {

  final Client client = HttpClientWithInterceptor.build(
    interceptors: [LoggingInterceptor()],
  );
  final Map<String,String> mapHeaders = {
    'Access-Control-Allow-Methods': '*',
Future<List<Transaction>> findAll() async {
    final Map<String, String> mapHeaders = {
      'Access-Control-Allow-Methods': '*',
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Headers': '*'
    };
    final dynamic url = baseURL;
    final Response response = await client
        .get(url, headers: mapHeaders)
        .timeout(Duration(seconds: 5));
    final List<dynamic> decodedJson = jsonDecode(response.body);
    return decodedJson
        .map((dynamic json) => Transaction.fromJson(json))
        .toList();
  }

Funcionou! Porém a API disponibilizada no curso também não adicionou nos headers: Access-Control-Allow-Origin: *

Desta forma, no console do navegador exibe a seguinte mensagem:

:59184/#/:1 Access to XMLHttpRequest at 'http://172.100.10.92:8080/transactions' from origin 'http://localhost:59184' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Apenas um detalhe relevante aos que gostariam de testar o projeto na web.

1 resposta

Olá, tudo bem ?

Vi que sua dúvida foi aberta já tem um tempo :(

Será que conseguiu resolver ? :D

Se sim compartilha conosco como fez!