@CrossOrigin

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:

@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?

3

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

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

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/
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

2

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

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