Бэкэнд работает только в Localhost React + Springboot + DockerJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Бэкэнд работает только в Localhost React + Springboot + Docker

Сообщение Anonymous »

Я пытаюсь развернуть приложение React+Spring Boot. Я могу получить доступ к Frontend, войти в систему /регистрацию и использовать веб -службу, как и ожидалось. : localhost: 8080 < /p>
< /blockquote>
, как только я попробую развернуть его на другой машине (настольный сервер с сервером Ubunt Via Postman (например: опубликовать нового пользователя в 192.168.1.x: 8080/api/account/regist .) .x: 3333

192.168.1.x:8080
< /blockquote>
Проблема: < /strong>
Если я попробую Acess 192.168.1.x: 3333 или 192.168.1.x: 8080 в другой машине (та же сеть) или My-IP: 333
(другая сеть), которую он работает, но нажатие входа в систему/регистр не работает. (Это работает только на хост -машине)Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8080/api/account/login. (Reason: CORS request did not succeed). Status code: (null).


Инструменты разработчика Chrome:

Failed to load resource: net::ERR_CONNECTION_REFUSED localhost:8080/api/account/login:1
TypeError: Failed to fetch


РЕДАКТИРОВАТЬ (23.05.2022)
Мне все еще не удалось решить проблемуWebSecurity.java
@EnableWebSecurity
public class WebSecurity extends WebSecurityConfigurerAdapter {
private UserDetailsService userDetailsService;
private BCryptPasswordEncoder bCryptPasswordEncoder;

@Autowired
private DataSource dataSource;

public WebSecurity(UserDetailsService userDetailsService, BCryptPasswordEncoder bCryptPasswordEncoder) {
this.userDetailsService = userDetailsService;
this.bCryptPasswordEncoder = bCryptPasswordEncoder;
}

@Override
protected void configure(HttpSecurity http) throws Exception {

// Comment to disable authentication
http.cors().and().csrf().disable().authorizeRequests().antMatchers(HttpMethod.POST, ACESSABLE).permitAll()
.anyRequest().authenticated().and().addFilter(new JWTAuthenticationFilter(authenticationManager()))
.addFilter(new JWTAuthorizationFilter(authenticationManager()))
// this disables session creation on Spring Security
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}

@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
// auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery("select username, password, 1 from users where username=?")
.authoritiesByUsernameQuery(
"select u.username, r.name from users_roles ur, users u, role r where u.username = ? and ur.users_id = u.id and ur.role_id = r.id")
.passwordEncoder(bCryptPasswordEncoder);
}

@Bean
CorsConfigurationSource corsConfigurationSource() {
System.out.println("setting cors configuration");
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration configuration = new CorsConfiguration();
configuration.applyPermitDefaultValues();
source.registerCorsConfiguration("/**", configuration);

return source;
}

}

WebConfig.java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
AntPathMatcher matcher = new AntPathMatcher();
matcher.setCaseSensitive(false);
configurer.setPathMatcher(matcher);
}
}

ЧТО Я ПРОБОВАЛ
пробовал, как предлагал @Knox, но все равно не смог это не сработает.
  • отсутствие указания разрешенногоOrigins разрывает соединение между внешним интерфейсом и серверной частью на ХОСТ-машине (CORS 'Access-Control-Allow- Origin' отсутствует), но снаружи это просто показывает то же самое, что и всегда (запрос CORS не удался).
@Bean
CorsConfigurationSource corsConfigurationSource() {
System.out.println("setting cors configuration");
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration configuration = new CorsConfiguration();
//configuration.applyPermitDefaultValues();
//configuration.allowedOrigins("*");
source.registerCorsConfiguration("/**", configuration);

return source;
}

Изображение
  • Заменив мой WebConfig.java на тот, который предоставил @Knox, все работает на HOST, но (запрос CORS не удался) извне
Изображение

РЕДАКТИРОВАНИЕ 2 (24.05.2022)
Только что заметил, что мой интерфейсный контейнер (React) не реагирует на изменения... я предполагаю, что URL-адрес, который я менял много раз, никогда не обновлялся при перезапуске Docker Compose . Поэтому изменение URL-адреса с localhost:8080 на myip:8080 может исправить это, если я смогу перезагрузить контейнер.
fetch(URL + '/api/account/login', {
Клиент Dockerfile
FROM node:8

WORKDIR /usr/scr/app
COPY package*.json ./

RUN npm install
COPY . .

CMD ["npm", "start"]


docker-compose.yml
client:
build: ./client
ports:
- 3333:3000
volumes:
- ./frontend:/usr/src/app
- /usr/src/app/node_modules
networks:
- network_backend



Подробнее здесь: https://stackoverflow.com/questions/723 ... oot-docker
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»