Oi, Luiz, tudo bem?
Quando você está o http://localhost:3000/principal.html
e tenta acessar o http://localhost:3000/frases
ambos estão na mesma origem, então, não há um problema. Porém, quando abrimos o arquivo diretamente no navegador com o file:///C:/.../principal.html
ou como o live-server
gerando esse endereço http://127.0.0.1:3000/principal.html
a origem não é reconhecida e dá o erro de Cors.
Mas quando utilizamos o código que está no express.js descomentado:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
Caso você abra o arquivo com direto da pasta, no meu caso file:///C:/Users/La%C3%ADs/Documents/alura-typer/public/principal.html
, não terá problema, porque você permitiu que todas as origens pudessem fazer requisições ao servidor, isso porque no código acima o uso do asterisco *
diz que as origens podem vir de qualquer parte. Um teste que fiz: https://imgur.com/a/QZisqYg
Fazendo a requisição pelo live-server também obtive sucesso no link acima o segundo print é com o endereço http://127.0.0.1:5500/public/principal.html
No final é, se você for fazer o acesso ao servidor pelo localhost:3000
para http://localhost:3000/frases
o código que implementa a permissão não é necessariamente necessário (pois a origem é a mesma), mas caso, você utilize outros caminhos como os que comentamos aqui, você precisará permitir que eles possam fazer acesso ao servidor.
Se ficou alguma dúvida é só falar!