Spring boot i problem z CORS

0

Cześć,
Właśnie zacząłem przygodę ze Spring Bootem i chciałem stworzyć takie podstawowe REST api. Za pomocą tutoriala stworzyłem coś prostego i chciałem odpalić. Wszystko u mnie działa jak trzeba, ale niestety gdy wchodzę na postman'a i tam próbuję użyć GET'a na mojej api, to wyskakuje błąd "CORS Error: The request has been blocked because of the CORS policy". Szukałem w internecie rozwiązań, ale zazwyczaj polecają dołożyć coś do pliku konfiguracyjnego. Problem polega na tym, że robiąc podstawy podstaw nie mam żadnego pliku konfiguracyjnego (facet z tutoriala też takowego nie posiada, ale u niego działa normalnie) i nie wiem co teraz robić. Tutaj w sumie prawie cały kod jaki zrobiłem:

@RestController
@RequestMapping("/api/cassetts")
public class VideoCassetteApi {

	
	private List<VideoCassette> videoCassettes;
	
	public VideoCassetteApi() {
		videoCassettes = new ArrayList<>();
		videoCassettes.add(new VideoCassette(1L, "Titanic", LocalDate.of(1995, 1, 1)));
		videoCassettes.add(new VideoCassette(2L, "Pulp Fiction", LocalDate.of(1990, 2, 2)));	
	}
	
	
	@GetMapping("/all")
	public List<VideoCassette> getAll(){
		
		return videoCassettes;
	}
	
	@GetMapping
	public VideoCassette getById(@RequestParam int index) {
		Optional<VideoCassette> first =videoCassettes.stream().
				filter(element -> element.getId() == index).findFirst();
		return first.get();
	
	}


0

Możesz dodać kolejna adnotacje nad klasą kontrolera - @CrossOrigin

4

Trochę off topic. Jeśli masz intellij to często nie ma sensu bawić się postmanem.
https://blog.jetbrains.com/idea/2020/09/at-your-request-use-the-http-client-in-intellij-idea-for-spring-boot-restful-web-services/

0

@dobrzyn227
Dodałem @crossOrigin z * i teraz w moich plikach .html działa dobrze, jednak w dalszym ciągu na postman'ie błąd z CORS.

@jarekr000000
Mam eclipse, bo jestem początkującym i za bardzo nie ogarniam, jak postawić serwer w darmowym intellij

Czy jeżeli wrzuciłbym na serwer, to błąd by minął?

2

@Niejadek:

Mam eclipse, bo jestem początkującym i za bardzo nie ogarniam, jak postawić serwer w darmowym intellij

Nie potrzebujesz stawiać żadnego serwera - ani w Eclipse ani w Intellij.
Skoro SpringBoot to masz tam jakąś metodę - main - po prostu ją odpalasz i masz.

1

@Niejadek a ja dodasz w POSTmanie header Origin:?

0

@Shalom: Nie za bardzo wiem jak to zrobić (np. w get)
@jarekr000000 a to nie jest tak, że swoją apkę stawiam na localhost i później do niej wysyłam jakieś zapytania?

0

A co to dla Ciebie znaczy "stawiam na localhost"? Prawie wszystkie moje aplikacje coś tam nasłuchują na localhost i wysyłam do nich zapytania. Ale odpalam z main - to oczywiste.

0

@jarekr000000: Mój błąd. Pewna osoba powiedziała mi, że nie można używać Tomcat'a w darmowym Intellij i nie sprawdziłem tego dokładnie. Teraz użyłem Intellij i rzeczywiście apka działa prawidłowo. Przepraszam za zamieszanie :) Błędu CORS w Postman'ie się nie pozbyłem, ale lokalnie testowanie działa, także na razie muszę przy tym zostać.

1

To się dzieje tylko przy tej apce? Jakie masz zależności w Maven/Gradle? Daj link do tutoriala

0

@TheLearner: Na początek wybrałem sobie filmik, żeby zobaczyć jak się po tym poruszać ;p Link: https://www.youtube.com/watch?v=XdtbRkN97go&feature=youtu.be
Jeśli chodzi o błąd CORS w Postman'ie, to mam przy każdej apce.

1

Też miałem ten problem, tyle, że mój wynikał ze Spring Security. Nie mam pojęcia czemu ty tak masz przy każdej apce. Tym samym, nie wiem czy Ci to pomoże, ale mi pomógł Postman Interceptor (jak nie masz domyślnie, musisz zainstalować). Włącz go. Następnie musisz dodać RequestHeader Key Origin i RequestHeader Value TwójLocalhost.

0

Dzięki @TheLearner pomogło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1