Configurações detalhadas do Spring Boot para suportar o processo de solicitação entre domínios

Por motivos de segurança, os navegadores modernos devem obedecer à política de mesma origem ao fazer solicitações HTTP. Caso contrário, são solicitações HTTP entre domínios, que são proibidas por padrão. O IP (nome de domínio) é diferente, ou a porta é diferente, e o protocolo for diferente (como HTTP, HTTPS) causará problemas entre domínios.

As soluções front-end gerais são:

① Use JSONP para oferecer suporte a solicitações entre domínios. O princípio do JSONP para obter solicitações entre domínios é simplesmente criação dinâmica

② Use o mecanismo de proxy de reação para resolver problemas entre domínios. Quando o front-end solicita, a solicitação é enviada primeiro para o back-end do mesmo endereço de origem e a solicitação de back-end é encaminhada para evitar o acesso entre domínios .

Posteriormente, o HTML5 suportou o protocolo CORS. CORS é um padrão W3C, o nome completo é "Compartilhamento de recursos de origem cruzada" (Compartilhamento de recurso de origem cruzada), permitindo que os navegadores enviem solicitações XMLHttpRequest para servidores de origem cruzada, superando assim a restrição de que AJAX só pode ser usado a partir do mesmo fonte. Ele adiciona um cabeçalho especial [Access-Control-Allow-Origin] ao servidor para informar ao cliente sobre as restrições de domínio cruzado. Se o navegador suportar CORS e determinar que a origem foi passada, ele permitirá que XMLHttpRequest inicie solicitações de domínio cruzado .

O front-end usa o protocolo CORS, e o back-end é necessário para oferecer suporte a solicitações que não são da mesma origem. Existem duas maneiras de configurar o suporte para solicitações que não são da mesma origem no Spring Boot.

Primeiro, configure CorsFilter.

@Configuration
public class GlobalCorsConfig {
  @Bean
  public CorsFilter corsFilter() {
    CorsConfiguration config = new CorsConfiguration();
     config.addAllowedOrigin("*");
     config.setAllowCredentials(true);
     config.addAllowedMethod("*");
     config.addAllowedHeader("*");
     config.addExposedHeader("*");

    UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
    configSource.registerCorsConfiguration("/**", config);

    return new CorsFilter(configSource);
  }
}

É necessário configurar o trecho de código acima. A segunda maneira é um pouco mais simples.

Em segundo lugar, adicione à classe de inicialização:

public class Application extends WebMvcConfigurerAdapter { 

  @Override 
  public void addCorsMappings(CorsRegistry registry) { 

    registry.addMapping("/**") 
        .allowCredentials(true) 
        .allowedHeaders("*") 
        .allowedOrigins("*") 
        .allowedMethods("*"); 

  } 
} 

Algumas perguntas da entrevista de alta frequência coletadas no último 2020 (todas organizadas em documentos), há muitos produtos secos, incluindo mysql, netty, spring, thread, spring cloud, jvm, código-fonte, algoritmo e outras explicações detalhadas, bem como planos detalhados de aprendizagem, entrevistas, classificação de perguntas, etc. Para aqueles que precisam obter esses conteúdos, adicione Q como: 11604713672

Acho que você gosta

Origin blog.csdn.net/weixin_51495453/article/details/113616269
Recomendado
Clasificación