@CrossOrigin

TheLearner
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Krypton
  • Postów: 298
0

Mam następujący problem. Mam napisane REST API w Spring. Chciałem zobaczyć jak działa frontend tj używam Reacta, Bootstrap z axios. Przy próbie użycia metody get wyskakuje mi:

Zablokowano żądanie do zasobu innego pochodzenia: zasady „Same Origin Policy” nie pozwalają wczytywać zdalnych zasobów z „http://localhost:8080/product” (brakujący nagłówek CORS „Access-Control-Allow-Origin”).

Użyłem w kontrolerze adnotacje @CrossOrigin, jednak bezskutecznie. Poniżej kod z kontrolera:

Kopiuj
@CrossOrigin(origins = "http://localhost:3000/")
@RestController
@RequestMapping("/product")
public class ProductController {
    ProductService productService;

    public ProductController(ProductService productService){
        this.productService=productService;
    }

    @GetMapping
    public List<Product> findAll() {
        return productService.findAll();
    }

Nie rozumiem co robię źle.
Czy ma to znaczenie, że używam h2, nie zapisując danych po wyłączeniu aplikacji?

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1910
3

Najłatwiej zrobić proxy na localhost:8080: https://create-react-app.dev/docs/proxying-api-requests-in-development/

Nie, baza nie ma nic do rzeczy, przecież możesz mieć backend bez bazy.

KE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 757
2
  1. Użyj proxy z create-react-app - super sprawa.
  2. Zobacz w devtoolsach, czy faktycznie serwer dobrze odpowiada na zapytanie OPTIONS.
  3. Nie wiem czy ten slash na końcu czegoś nie psuje - tutaj robią bez https://spring.io/guides/gs/rest-service-cors/
TheLearner
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Krypton
  • Postów: 298
0
kelog napisał(a):
  1. Nie wiem czy ten slash na końcu czegoś nie psuje - tutaj robią bez https://spring.io/guides/gs/rest-service-cors/

No nieeeee. Faktycznie, masz rację! Jak zwykle tego typu błąd...Wszystko oki już. Dzięki

nowyworek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: świat
  • Postów: 174
2

Proxy, albo masz WebMvcConfigurer i tam jest corsRegistry.
@CrossOrigin to smieci w kodzie

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.