Usando Proxy - Nesta solução, executaremos um proxy de forma que, quando a solicitação for feita, ele parecerá ter a mesma origem. Se você estiver usando o nodeJS, poderá usar cors-qualquer lugar para executar as tarefas de proxy. https://www.npmjs.com/package/cors-anywhere .
Exemplo : -
var host = process.env.HOST || '0.0.0.0';
var port = process.env.PORT || 8080;
var cors_proxy = require('cors-anywhere');
cors_proxy.createServer({
originWhitelist: [], // Allow all origins
requireHeader: ['origin', 'x-requested-with'],
removeHeaders: ['cookie', 'cookie2']
}).listen(port, host, function() {
console.log('Running CORS Anywhere on ' + host + ':' + port);
});
Lado do servidor - No lado do servidor, precisamos ativar solicitações de origem cruzada. Primeiro, obteremos as solicitações comprovadas (OPTIONS) e precisamos permitir a solicitação com o código de status 200 (ok).
Solicitações comprovadas primeiro enviam um cabeçalho de solicitação HTTP OPTIONS para o recurso no outro domínio, a fim de determinar se a solicitação real é segura para enviar. As solicitações entre sites são comprovadas dessa maneira, pois podem ter implicações nos dados do usuário. Em particular, uma solicitação é comprovada se usar métodos diferentes de GET ou POST. Além disso, se o POST for usado para enviar dados da solicitação com um Tipo de Conteúdo diferente de application / x-www-form-urlencoded, multipart / form-data ou text / plain, por exemplo, se a solicitação POST enviar uma carga XML para o servidor usando application / xml ou text / xml, a solicitação é comprovada. Ele define cabeçalhos personalizados na solicitação (por exemplo, a solicitação usa um cabeçalho como X-PINGOTHER)
Se você estiver usando a mola, basta adicionar o código abaixo para resolver o problema. Aqui desabilitei o token csrf que não importa, habilite / desabilite de acordo com sua necessidade.
@SpringBootApplication
public class SupplierServicesApplication {
public static void main(String[] args) {
SpringApplication.run(SupplierServicesApplication.class, args);
}
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*");
}
};
}
}
Se você estiver usando a segurança de mola, use o código abaixo, juntamente com o código acima.
@Configuration
@EnableWebSecurity
public class SupplierSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll().antMatchers("/**").authenticated().and()
.httpBasic();
}
}