Ошибка Cors между пружинной загрузкой и angular

Я пытался подключить локальный запуск весенней загрузки в коде vs с angular в stackblitz, он продолжает показывать статус ожидания, а затем в сети:: error

пружинная загрузка: v3.3.1 угловой 17

URL-адрес бэкэнда: http://localhost:8080

и для stackblitz: https://stackblitzstartersf3qupm-d2jk--4200--dc4d7514.local-credentialless.webcontainer.io/

Я объявил файл WebConfig

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**");
    }

}

и в файле запуска

@SpringBootApplication
@ComponentScan(basePackages = "com.example.novelWebsite", basePackageClasses = WebConfig.class) // Add CorsConfig
public class NovelWebsiteApplication {

    public static void main(String[] args) {
        SpringApplication.run(NovelWebsiteApplication.class, args);
    }

}

я также попробовал подход объявления в контроллере, но все равно не удалось

@RestController
// @CrossOrigin(origins = "https://stackblitzstartersf3qupm-d2jk--4200--dc4d7514.local-credentialless.webcontainer.io/")
public class HelloController {

    @GetMapping("/")
    // @CrossOrigin(origins = "https://stackblitzstartersf3qupm-d2jk--4200--dc4d7514.local-credentialless.webcontainer.io")
    public String index() {
        return "Greetings from Spring Boot!";
    }

}

в main.ts я добавил

bootstrapApplication(App, {
providers: \[provideAnimationsAsync(),
provideRouter(routes),
provideHttpClient()\]
});

я создал файл proxy.conf.json

{   "api": "http://localhost:8080",
    "secure": false, 
    "changeOrigin": true }

и поместите его в angular.json

"serve": {           
     "builder": "@angular-devkit/build-angular:dev-server",           
     "configurations": {             
            "development": {               
                   "buildTarget": "demo:build:development",               
                  ** "proxyConfig": "proxy.conf.json"  **           
            },             
            "production": {               
                   "buildTarget": "demo:build:production"             
            }           
      },           
      "defaultConfiguration": "development"         }       },

вот сервисный код

export class HelloService {

    private apiURL = 'http://localhost:8080'; // Replace with your Spring Boot backend URL

    constructor(private http: HttpClient) {}

    getGreetings(): Observable\<string\> {
       return this.http.get\<string\>(`${this.apiURL}`);
    }
}

и код компонента, который его получил

ngOnInit() {     
      this.helloService.getGreetings().subscribe({       
         next: (response: string) => {         
             this.responseText = response;       
         },       
         error: (err) => {         
             console.error('Error fetching greetings:', err);       
         }     
      });   
}

и показать в html

{{responseText}}

оно вернулось в

Error fetching data: HttpErrorResponse {headers: _HttpHeaders, status: 0, statusText: 'Unknown Error', url: 'http://localhost:8080', ok: false, …}

на вкладке сети показывался статус ожидания для него

Я пытался это исправить, но безрезультатно, буду признателен за любую помощь, спасибо

@jub0bs нет, это не связано, но я решил это, кстати, публично, локальный бэкэнд с помощью ngrok, а в angular я просто использую http, чтобы получить его

nino144 21.06.2024 12:06
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
2
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я попробовал другой подход вместо локального бэкэнда и общедоступного интерфейса. Я также сделал бэкэнд общедоступным с помощью ngrok, и это сработало. Не забудьте удалить конфигурацию прокси-сервера в Angular.

Другие вопросы по теме