Olá tudo bem? Me surgiu uma duvida em relação a permissão da porta para acesso a API. No caso de uma API publica, como é feita essa permissão? Como saber em qual porta será rodado o front para a API permitir o acesso?
Olá tudo bem? Me surgiu uma duvida em relação a permissão da porta para acesso a API. No caso de uma API publica, como é feita essa permissão? Como saber em qual porta será rodado o front para a API permitir o acesso?
Olá, Gabriel! Como vai?
Sua pergunta é muito pertinente e a resposta está relacionada com a política de CORS (Cross-Origin Resource Sharing), que é uma política de segurança implementada pelos navegadores para evitar que recursos sejam acessados por domínios diferentes do domínio de origem, a menos que seja explicitamente permitido.
No contexto do curso, a API está sendo executada na porta 8080 e o front-end na porta 5501. Como essas são consideradas origens diferentes pela política de CORS, é necessário configurar a API para permitir que o front-end acesse seus recursos.
Para isso, foi criada uma classe CorsConfiguration
na aplicação back-end (API). Essa classe implementa a interface WebMvcConfigurer
do Spring e sobrescreve o método addCorsMappings()
. Nesse método, é adicionado um mapeamento que permite que qualquer URL (por causa do "/**"
) do domínio "http://127.0.0.1:5501" acesse a API. Além disso, são configurados os métodos HTTP que podem ser usados nesse acesso, como "GET", "POST", "PUT", "DELETE", entre outros.
Vou te mostrar um exemplo prático:
package br.com.alura.screenmatch.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://127.0.0.1:5501")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "TRACE", "CONNECT");
}
}
Neste exemplo, a API está sendo configurada para permitir que qualquer URL do domínio "http://127.0.0.1:5501" a acesse usando os métodos HTTP "GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "TRACE", "CONNECT".
Portanto, em uma API pública, essa permissão seria feita de maneira semelhante, mas permitindo provavelmente o acesso de qualquer origem (usando "*
" em vez de um domínio específico) e limitando possivelmente os métodos HTTP permitidos, dependendo das necessidades da API.
Espero ter ajudado e bons estudos!