Использование прокси- сервера. В этом решении мы запустим прокси-сервер таким образом, что при запросе через прокси он будет выглядеть так, как будто он имеет некое происхождение. Если вы используете nodeJS вы можете использовать Корс в любом месте , чтобы сделать прокси вещи. https://www.npmjs.com/package/cors-anywhere .
Пример : -
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);
});
На стороне сервера - на стороне сервера мы должны включить запросы кросс-происхождения. Сначала мы получим Предварительно просвеченные запросы (ОПЦИИ), и нам нужно разрешить запрос с кодом состояния 200 (хорошо).
Предварительно выданные запросы сначала отправляют заголовок запроса HTTP OPTIONS ресурсу в другом домене, чтобы определить, безопасен ли фактический запрос для отправки. Межсайтовые запросы предварительно просматриваются следующим образом, поскольку они могут иметь значение для пользовательских данных. В частности, запрос предварительно выдан, если он использует методы, отличные от GET или POST. Кроме того, если POST используется для отправки данных запроса с Content-Type, отличным от application / x-www-form-urlencoded, multipart / form-data или text / plain, например, если запрос POST отправляет полезную нагрузку XML на сервер используя application / xml или text / xml, запрос предварительно просвечивается. Он устанавливает пользовательские заголовки в запросе (например, запрос использует заголовок, такой как X-PINGOTHER)
Если вы используете пружину, просто добавьте приведенный ниже код, чтобы решить проблему. Здесь я отключил токен csrf, который не имеет значения, включить / отключить в соответствии с вашими требованиями.
@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("*");
}
};
}
}
Если вы используете систему безопасности Spring, используйте приведенный ниже код вместе с приведенным выше кодом.
@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();
}
}