@CrossOrigin

TheLearner
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 3 lata
  • 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:około 17 lat
  • Ostatnio:około 6 godzin
  • Postów:1881
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.


”Engineering is easy. People are hard.” Bill Coughran
edytowany 1x, ostatnio: Charles_Ray
KE
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 8 godzin
  • Postów:684
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:ponad 5 lat
  • Ostatnio:około 3 lata
  • 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:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:świat
  • Postów:174
2

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


Julian
Shalom
To ma sens, jeśli faktycznie chcesz robić ustawiena CORS per metoda czy per kontroler, ale to jest bardzo niecodzienna sytuacja ;]

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.