<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Carine Batista</title>
    <description>The latest articles on DEV Community by Carine Batista (@carinebatista).</description>
    <link>https://dev.to/carinebatista</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F368232%2F29574365-f0eb-414f-b0dc-677338f6a1fd.jpg</url>
      <title>DEV Community: Carine Batista</title>
      <link>https://dev.to/carinebatista</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/carinebatista"/>
    <language>en</language>
    <item>
      <title>[PT-BR] - Entenda CORS e saiba lidar com os erros!</title>
      <dc:creator>Carine Batista</dc:creator>
      <pubDate>Wed, 14 Jun 2023 23:35:24 +0000</pubDate>
      <link>https://dev.to/carinebatista/entenda-cors-de-uma-vez-por-todas-4ef6</link>
      <guid>https://dev.to/carinebatista/entenda-cors-de-uma-vez-por-todas-4ef6</guid>
      <description>&lt;p&gt;Cross-Origin Resource Sharing ou simplesmente CORS para os mais intímos, é um padrão de segurança que permite que um determinado site, a partir de uma URL, solicite dados de outra URL ou API.&lt;/p&gt;

&lt;p&gt;Se você é um desenvolvedor front-end, provavemente já se deparou com a seguinte frustante mensagem no seu console em algum momento da vida:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkl82npn9q2krxnc2mj7w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkl82npn9q2krxnc2mj7w.png" alt="Console com cors error, que assola à todos os programadores"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isso acontece porque os navegadores, por padrão, implementam um politica de origem como parte de modelo de segurança. Essa política permite que os websites acessem e requisitem imagens e dados da mesma URL, mas bloqueia qualquer coisa que provenha de fontes externas, a menos que algumas condições expecíficas e pré-definidas sejam atigindas. &lt;/p&gt;

&lt;p&gt;Quando o navegador faz uma requisição, ele adiciona por padrão um cabeçalho de origem (header) à mensagem. Se a request atingir um servidor com a mesma origem, o navegador permitirá a conexão. No entanto, se a solicitação for para uma URL diferente, então é conhecida como uma &lt;strong&gt;cross-origin request&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Quando enviando a resposta do servidor, vai ser adicionado o "Access-control-allow-origin" no header, o valor do cabeçalho precisa ser correspondente com a origin header na request, ou também pode ser uma (*) que permite qualquer entrada ou qualquer URL. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gsc193l71mwoxzhfb7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gsc193l71mwoxzhfb7s.png" alt="Access control origin igual ao caminho de origem"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso os valores sejam diferentes, o navegador impedirá o compartilhamento dos dados com o cliente, resultando no erro mostrado acima. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmcipkkx6l360i4e6h2k0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmcipkkx6l360i4e6h2k0.gif" alt="You shall not pass gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como lidar com problemas de CORS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se você estiver vivenciando um erro de CORS agora, debugar é bastante simples, basta abrir a guia do navegador, inspecionar e ir para a guia "Network" (Rede). Encontre a response dos dados/request(API) e procure pelo header de &lt;strong&gt;Access-control-allow-origin&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffyrqtjr0qzl1wphr5zow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffyrqtjr0qzl1wphr5zow.png" alt="Response header"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se por ventura esse cabeçalho não existir, significa que você precisa habilitar &lt;strong&gt;CORS&lt;/strong&gt; em seu servidor (isso pode ser feito utilizando uma biblioteca NPM, como o &lt;a href="https://www.npmjs.com/package/cors" rel="noopener noreferrer"&gt;NPM cors&lt;/a&gt; caso esteja utilizando Express).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express')
const cors = require('cors')
const app = express()

app.use(cors())

app.get('/', (req, res) =&amp;gt; {
  res.json({msg: 'This is CORS-enabled for all origins!'})
})

app.listen(80, () =&amp;gt; {
  console.log('CORS-enabled web server listening on port 80')
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se por acaso esse header existir e a URL for diferente do seu website/request, você precisará ajustá-lo para corresponder à sua URL e caminho, ou permitir * (Que permite qualquer acesso, mas tome muito cuidado com essa decisão, se tratando de um produto em PROD!), lembrando que tudo isso pode e é configurado através do seu servidor ou backend. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>security</category>
      <category>help</category>
    </item>
    <item>
      <title>[PT-BR] Configurando Git e chave SSH na sua Máquina, do Zero - (Windows)</title>
      <dc:creator>Carine Batista</dc:creator>
      <pubDate>Sun, 26 Dec 2021 14:09:09 +0000</pubDate>
      <link>https://dev.to/carinebatista/pt-br-configurando-o-git-e-chave-ssh-na-sua-maquina-do-zero-windows-3kib</link>
      <guid>https://dev.to/carinebatista/pt-br-configurando-o-git-e-chave-ssh-na-sua-maquina-do-zero-windows-3kib</guid>
      <description>&lt;p&gt;Na última semana adquiri um novo Desktop Windows e tive de configurar novamente todo o ambiente de programação para conseguir codar. &lt;br&gt;
Já perdi a conta de quantas vezes fiz esse processo, mas nunca parei de fato para estudar e entender o que estava acontecendo, ao invés de copiar e colar códigos no meu terminal resolvi escrever esse tutorial para auxiliar você; que assim como eu precisa passar por isso ou quer entender um pouco mais o que cada comando faz. Então mãos à obra! &lt;/p&gt;

&lt;p&gt;Antes de iniciar tudo gostaria de te introduzir ao Git, Github e SSH (Caso já seja familiar com esses temas, sugiro que pule para a sessão 3)&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Git e Github
&lt;/h2&gt;

&lt;p&gt;O Git é um sistema de controle de versão distribuído e muito utilizado, em termos gerais é um software livre que permite e simplifica o processo de compartilhamento e versionamento de um projeto com um time ou com outros programadores.&lt;br&gt;
&lt;a href="https://github.com/" rel="noopener noreferrer"&gt;Github&lt;/a&gt; por sua vez é a plataforma online onde você pode criar repositórios, compartilhar, seguir programadores e hospedar seus projetos além de colaborar com softwares open source, e a tecnologia que o sustenta é o GIT.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. SSH: O que é, o que faz e onde vive?
&lt;/h2&gt;

&lt;p&gt;Antes de mais nada acho importante estabelecermos o que é SSH. Essa sigla vêm do acrônimo em inglês: Secure Shell, traduzindo seria algo como uma "Cápsula segura". &lt;br&gt;
De forma bem generalizada ele é um protocolo que age como um mecanismo de segurança autenticador, garantindo que o cliente e servidor remoto troquem informações de maneira segura e dinâmica. &lt;br&gt;
O SSH é baseado em duas keys, uma pública (servidor: em nosso caso o Github) e uma privada (a máquina local), a privada consegue abrir unicamente a chave pública, então à enviamos para o servidor e com a nossa local estabelecemos comunicação.&lt;br&gt;
O SSH é oferecido normalmente por serviços de hospedagem, e no nosso caso como tratamos acima: o Github. &lt;br&gt;
O Github permite que você crie diversas chaves SSH para que gerencie diretamente de sua máquina, com segurança e sem precisar fornecer seu nome de usuário e token toda vez que quiser acessar algum repositório.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Mãos à obra
&lt;/h2&gt;

&lt;p&gt;Para iniciarmos a configuração precisamos instalar o Git. Existem algumas formas de fazê-lo, você pode simplesmente fazer o dowload manualmente &lt;a href="https://git-scm.com/download/win" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;, onde terá acesso a versão oficial disponível e mais recente. &lt;br&gt;
Ou também pode instalar diretamente do código-fonte, não há muita diferença entre um e outro. Instalando diretamente do código-fonte você sempre terá acesso a versão mais recente possível, e para fazê-lo é necessário ter as seguintes bibliotecas das quais o Git depende: Autotools, curl, zlib, openssl, expat e libiconv. Caso queira fazer dessa maneira você pode seguir esse &lt;a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt;. &lt;br&gt;
Porém para este tutorial, sugiro que instale manualmente pelo arquivo .exe, disponível &lt;a href="https://git-scm.com/download/win" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Com o arquivo instalado, basta aceitar os Termos e pressionar "Next", e eu particularmente neste passo prefiro mudar apenas um item, para a opção de &lt;a href="https://www.bbc.com/news/technology-53050955#:~:text=The%20world's%20biggest%20site%20for,to%20remove%20references%20to%20slavery.&amp;amp;text=The%20master%2Dslave%20relationship%20in,controls%20other%20copies%2C%20or%20processes." rel="noopener noreferrer"&gt;alterar&lt;/a&gt; o nome padrão das Branches futuras de 'master' para 'main': &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F716eg3zl4myt97xi9ajc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F716eg3zl4myt97xi9ajc.png" alt="Instalador do Git - Alterando Branche de 'master' para main"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após feita a instalação, para execução dos comandos precisaremos do Git Bash (Que é uma aplicação que emula um terminal Unix, uma vez que o Git foi desenvolvido inicialmente para rodar em sistemas Unix).&lt;br&gt;
Mas não se preocupe, ele é instalado automaticamente com a instalação do Git. &lt;/p&gt;

&lt;p&gt;Para acessá-lo basta pesquisar em sua bara de tarefas por "Git Bash" e executar os comandos que serão listados a seguir. &lt;/p&gt;
&lt;h2&gt;
  
  
  Gerando uma Chave SSH
&lt;/h2&gt;

&lt;p&gt;Para gerar nossa chave SSH que fará comunicação com nosso Github, precisamos digitar o seguinte comando no Git Bash:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ssh-keygen -t ed25519 -C "your_email@example.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O comando ssh-keygen como o próprio nome sugere cria um par de chaves para seu e-mail e utiliza o algorítmo Ed25519, você pode entender mais sobre esse algorítmo &lt;a href="https://blog.peterruppel.de/ed25519-for-ssh/" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Após executar esse comando, ele exibirá uma mensagem perguntando em qual arquivo deseja salvar sua chave, basta pressionar Enter para manter o caminho default e prosseguir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter a file in which to save the key
(/c/Users/you/.ssh/id_algorithm):[Press enter]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse momento ele te pedirá uma senha, é importante que você pressione Enter em ambas as vezes, para que ele não crie uma chave que será solicitada toda vez quando for utilizar um repositório.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E pronto, sua chave SSH foi gerada com sucesso! &lt;/p&gt;

&lt;h2&gt;
  
  
  Adicionando sua SSH Key ao SSH-agent
&lt;/h2&gt;

&lt;p&gt;O SSH-agent é um gerenciador de chaves SSH, ele lida com a assinatura de dados de autenticação para você. Ao se autenticar em um servidor é necessário assinar alguns dados usando sua chave privada, para provar quem você é. &lt;br&gt;
O uso de um agente de chave permite o uso de várias chaves de forma simples, não sendo necessário especificar o caminho para cada chave individualmente.&lt;/p&gt;

&lt;p&gt;Para iniciar, vamos executar o ssh-agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ eval "$(ssh-agent -s)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Incluir sua ssh-key ao ssh-agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ssh-add ~/.ssh/id_ed25519
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adicionando sua nova chave SSH ao Github
&lt;/h2&gt;

&lt;p&gt;A sua chave SSH foi criada no arquivo C:\Users\nome-do-seu-usuario.ssh\id_rsa.pub, você precisará copiar o conteúdo desse arquivo, e isso pode ser feito tanto manualmente (abrindo o arquivo pelo explorador de arquivos e copiando), ou por linha de comando utilizando o clip:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;clip &amp;lt; ~/.ssh/id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Abra seu Github, vá até Configurações &amp;gt; SSH and GPG Keys e clique no botão "New SSH Key". &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3epe82i3wud7r1zig69t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3epe82i3wud7r1zig69t.png" alt="Github- adicionando sua SSH key"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em Title crie o nome que preferir para seu dispositvo novo, e em Key basta colar a chave que foi copiada do terminal com o comando clip, ou manualmente pelo arquivo, e pronto, você configurou o Git e Github com uma chave SSH! &lt;/p&gt;

</description>
      <category>git</category>
      <category>help</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
