Quando precisamos fornecer serviços ao mundo exterior através da interface repousante, se a arquitetura for separada das extremidades da frente e de trás neste momento, ela envolverá problemas de domínio cruzado. Como resolver problemas de domínio cruzado? Vamos discutir esta questão abaixo.
Solução 1: Adicione a anotação @crossorigin no controlador
Como usá -lo é o seguinte:
@CrossOrigin // Annotation method @RestController public class HandlerScanController { @CrossOrigin(allowCredentials="true", allowedHeaders="*", methods={RequestMethod.GET, RequestMethod.POST, RequestMethod.DELETE, RequestMethod.OPTIONS, RequestMethod.HEAD, RequestMethod.PUT, RequestMethod.PATCH}, Origins = "*") @PostMapping ("/confirm") Handler de resposta pública (@RequestBody Request JSON) {return null; }} Solução 2: Configuração global
O código é o seguinte:
@Configuration public class MyConfiguration {@Bean public webmvcConfigurer corsConfigurer () {retorna new webmvcConfigureRAdApter () {@Override public void addCorsMappings (CORSROCISTISTRIOTS) {Registry.addmapping ("/**"). }}; }} Solução 3: Use em combinação com filtro
Na classe principal de bota da primavera, adicione um corsfilter
/** * * ATENÇÃO: O domínio cruzado simples é Get, Head e Post solicitações, mas o "tipo de conteúdo" da solicitação de postagem pode ser apenas aplicativo/x-www-forma-urlcoded, multipart/form-data ou texto/liso * caso contrário, não é simples domínio cruzado. Existe um mecanismo de pré-voo para este domínio cruzado. Para ser franco, ele emitirá duas solicitações, uma solicitação de opções e uma solicitação real*/ @Bean Public corsfilter corsfilter () {final urlBasedCorsConfigurationsource Source = novo urlBasedCorsConfigurationsource (); final CORSConfiguration config = new corsConfiguration (); config.setLlowCredentials (true); // permite que os cookies sejam cross-domain config.addallowedorigin ("*"); // #Alound o URI de solicitações a este servidor, * significa tudo permitido. No SpringMVC, se definido como *, ele será automaticamente convertido em origem config.addallowedheader (" *"); // #add para acessar o cabeçalho, * significa tudo config.setmaxage (18000L); // O tempo de cache das solicitações de pré -voo (segundos), ou seja, durante esse período, config.addallowedmethod ("opções"); // métodos que permitem o envio de solicitações, * significa que todos permitem o config.addallowedmethod ("cabeça"); config.addallowedmethod ("get"); // Permitir o método de solicitação do get config.addallowedmethod ("put"); config.addallowedmethod ("post"); config.addallowedmethod ("excluir"); config.addallowedmethod ("patch"); fonte.ReGisterCorsConfiguration ("/**", config); devolver novo corsfilter (fonte); } Obviamente, se houver muitos microsserviços, você precisará adicionar esse código à classe principal de cada serviço, que viola o princípio seco. Uma abordagem melhor é resolver problemas de domínio cruzado na camada de gateway de Zuul, de uma vez por todas.
Para mais informações sobre o Domínio Cross-End, consulte: http://www.vevb.com/article/83093.htm
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.