Ionic & Angular: Fazendo o CORS seu amigo

Hiago Souza

Sou o Hiago, tenho 25 anos. Moro em São José do Rio Preto, interior de São Paulo. Sou formado em Analise e Desenvolvimento de Sistemas pela UNIP. E especialista em Consultoria Web pela Fatec de São José do Rio Preto. Sou entusiasta em desenvolvimento mobile/web, open-source e linux. E atuo profissionalmente com tecnologia desde 2013. Estudo cloud e eletrônica há algum tempo, e levo isso como um hobby.

Você pode gostar...

28 Resultados

  1. Bruno disse:

    Olá, Higor!
    Muito bacana o post, consegui entender bem o problema.
    Acontece que optei por liberar o CORS para o http://localhost:8080 e ainda assim não funcionou.
    O curioso é que quando libero para todos os domínios, funciona corretamente.
    Sabe se a porta que o ionic usa mudou?
    Muito obrigado!

    • Hiago Souza disse:

      Bom dia Bruno tudo bem? A porta 8080 é quando o app está compilado, caso você esteja rodando o ionic no seu browser em modo de desenvolvimento a porta utilizada será a partir da porta 8100. Eu não vi como tá a nova versão do ionic, então se estiver utilizando ela pode ser que realmente tenha mudado algo por conta do capacitor. Mas vou ver isso para você, onde acontece o erro? No dispositivo ou no seu navegador (utilizando o ionic serve)?

      • Bruno disse:

        Hiago, perdão por errar seu nome. Acontece em ambos. Quando faço o proxy para a porta 8100, roda certinho no browser, mas quando mudo para a porta 8080 e mando rodar no android real, simplesmente não vai. Quando libero totalmente, todos conseguem acessar…

        • Hiago Souza disse:

          Sem problemas Bruno, acontece ;)!! A configuração de proxy é válida apenas para ambiente de desenvolvimento. Quando compila o App o proxy do node não é considerado, você pode inspecionar o webview do aplicativo rodando utilizando a url “chrome://inspect” (isso com o dispositivo plugado no computador). Veja qual erro aparece no console e me encaminhe aqui. As vezes a porta local onde o app roda foi modificada nas versões recentes do ionic.

    • Henry Ávila disse:

      Olá Bruno.

      Segundo a documentalção do ionic, estas são as urls para cada versão do ionic

      CAPACITOR
      iOS → capacitor://localhost
      Android → http://localhost

      IONIC 3
      iOS → ionic://localhost
      Android → http://localhost

      IONIC 2
      iOS → http://localhost:8080
      Android → http://localhost:8080

      Veja a documentação que fala sobre CORS:
      https://ionicframework.com/docs/faq/cors#a-enabling-cors-in-a-server-you-control

  2. Vinicius Araujo disse:

    Olá,
    Estou desenvolvendo um app que tratei o problema de cors com a configuração de proxy o que faz tudo funcionar direitinho no meu navegador. Fui testar no dispositivo real através do apk e não funciona. Rodei no inspect para ver o que estava ocorrendo e minha requisição traz 200 ok mas como body vazio. Coloquei para acessar a requisição direto da url da api que preciso pegar as informações e caiu no cors de novo (XMLHttpRequestProgressEvent). Pode me ajudar com isso?

    • Hiago Souza disse:

      Olá Vinícius boa noite, qual é a versão do seu ionic? Qual a URL que o app chamou? Manda aqui que vou te orientar.

      • Vinicius Araujo disse:

        Olá Hiago, infelizmente não tenho permissão de compartilhar a URL. Eu estou usando a versão 4.2.1. Em resumo, o problema que tenho é de que o apk não faz as requisições e debugando apareceu o problema de cors. No navegador roda direitinho com o proxy configurado, já no dispositivo não roda nem com proxy e nem sem proxy.

        • Hiago Souza disse:

          Vinicius, considere fazer a liberação de CORS nesse caso. O proxy é apenas em desenvolvimento, na versão 4 eu não sei se houve alguma mudança nisso, eles mudaram do Cordova para o Capacitor talvez o melhor seja você fazer a liberação do CORS no seu endpoint.

  3. André B. disse:

    Hiago, boa noite.

    Estou com esse problema de cors quando gero o apk e jogo celular. já usei o inspect.

  4. Rafael Moura disse:

    Noa noite Hiago, estou com uma dúvida, não consegui resolve essa questão, tenho minha aplicação Laravel/Angular, tudo certo por lá, consigo integrar a fazer as requisições de boa, mas no ionic (v4), fiz de tudo e ele cai justamente nesse problema com o CORS, por ex, minha API é assim: http://127.0.0.1:8000/api/v1/login, detalhe, eu estou rodando no “lab” do Ionic na porta 8200 (abre automaticamente) e ele dá problema na 8100, olha o erro:

    Access to XMLHttpRequest at ‘http://127.0.0.1:8000/api/v1/login’ from origin ‘http://localhost:8100’ 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.

    • Hiago Souza disse:

      Olá Rafael, no ionic 4 você já pode fazer uso dos proxies do angular se não me engano. Eu vou criar um novo post sobre o assunto e associo com esse beleza?

  5. Santos disse:

    Olá Hiago por gentileza poderia me dar uma ajuda

    olha instalei osclass tudo correu certo porem noto que ao abrir a pagina principal sempre abre como pagina insegura a partir de qualquer outro click fica Pagina segura inspecionado o doc descobri que estes erros
    procurei então por todo código e pastas a fim de editar esse HTTP para HTTPS para resolver mas não encontro nada ai pesquisei e vi que se trata de algo parecido ou igual a este aqui deste post mas não sei com o resolver posso mostrar os erros

  6. Hiago Souza disse:

    Santos, não precisa de liberar o Cors no seu caso. Basta você utilizar o mesmo protocolo para receber os arquivos. Você tá acessando o site via http e importando os recursos com https. Ao invés de colocar http:// ou https:// coloque apenas // que ele assume o mesmo protocolo utilizado para acessar a página. Vale lembrar que isso só funciona pra vc porque é o mesmo domínio e o Cors tá ocorrendo por conta de não estar acessando do mesmo protocolo http/https.

  7. Santos disse:

    Ok ! entendi decupa…vasculhei todo script para encontrar o local onde apontou o erro e tentar editar mas nã achei em lugar algum
    poderia me dizer no caso em qual pasta devo editar isso? pois o caminho me leva na pasta de font e lá não tem nada que eu possa editar obrigado

  8. Santos disse:

    Ola Hiago como vai? tem como excluir o este post que fiz com os links obrigado

  9. Miguel Rios disse:

    Estimado Hiago Souza. Tengo un enrome problema y es por temas de CORS. Mi version de Ionic es 5 y estoy accediendo localmente a un servicio a una api estatal, pero me sale problemas de CORS. Y esta app va a ser una app publica. ¿Como puedo solucionar el problema? Ya intente ponerle un proxy y probarlo en un dispositivo pero no me ha funcionado y estoy desesperado.

    • Hiago Souza disse:

      Hola miguel

      ¿Cómo estás?
      ¿Puedes compartir la URL de esta API?

      Si no tiene acceso al código fuente, es necesario implementar un proxy en su BackEnd y esto hará la llamada por usted.

      (Aplicación) => (Su Proxy, el cors va aquí) => (API pública)

  10. Igor Assis disse:

    Olá Iago. Excelente artigo! Eu tenho uma dificuldade e sinceramente estou com dificuldade em saber a direção certa que devo seguir. Gostaria de saber se vc pode me orientar. Estou tentando incorporar no meu app ionic v1 um iframe cuja origem eh o um site HTTPS. No Android funciona fino. No Ios o safari apresenta o seguinte erro : Blocked a frame with origin “https://www.meusite.com” from accessing a frame with origin “http://localhost:8100”. The frame requesting access has a protocol of “https”, the frame being accessed has a protocol of “http”. Protocols must match. Deveria criar um Proxy para esse HTTPS ou compreendi errado? Mto obrigado de antemão

    • Hiago Souza disse:

      Olá Igor, perdoe a demora. Tive que me ausentar do blog durante um periodo… Qual é o seu backend? O proxy com ionic é para resolver esse BO no ambiente de desenvolvimento, para a sua produção é necessário configurar o CORS no seu WebServer e caso possível na sua própria LP.

  11. Gabriel disse:

    Obrigado, Hiago! Seu artigo ficou muito top!

  12. Alexandre Manzo Nubile disse:

    Boa Noite, Hiago.

    Estou usando o Ionic 6 e tanto com “ionic serve” quanto executando no celular ocorre esse erro.

    No html do app está assim:

    Segue a URL:
    https://drive.google.com/file/d/18tXpo1tfpNZsNuTuzabg5CKdV_lsUCfi/view?usp=sharing

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

você está offline

Esse blog utiliza cookies para fornecer uma melhor experiência ao usuário. Ao navegar pelo site você concorda com a nossa Política de Privacidade e Cookies e autoriza a inserção de cookies no seu dispositivo.