Происхождение было заблокировано политикой CORS Spring и загрузкой React. - PullRequest
0 голосов
/ 16 января 2020

Spring Boot с React

Доступ к XMLHttpRequest в 'http://localhost: 8080 / ' из источника 'http://localhost: 3000 ' заблокирован Политика CORS:

Это контроллер, который возвращает все объекты округа

Доступ к XMLHttpRequest по адресу http://localhost: 8080 / из источника 'http://localhost: 3000 ' заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'.

package com.ministry.demo.controller;

import com.ministry.demo.model.District;
import com.ministry.demo.repository.DistrictRepository;
import com.ministry.demo.service.DistrictService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping(path = "district")
public class DistrictController {
    @Autowired
    DistrictService service;

    @GetMapping(path = "getAll")
    List<District> getAllDistrict(){
        return service.getAllDistricts();
    }
}

Ответы [ 3 ]

0 голосов
/ 16 января 2020

MyConfiguration. java

@Configuration
public class MyConfiguration implements WebMvcConfigurer {

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

}
0 голосов
/ 27 января 2020

Я нашел ответ

package com.ministry.demo.controller;

import java.util.List;

@RestController
@CrossOrigin
@RequestMapping(path = "district")
public class DistrictController {
    @Autowired
    DistrictService service;

    @GetMapping(path = "getAll")
    List<District> getAllDistrict(){
        return service.getAllDistricts();
    }
}
0 голосов
/ 16 января 2020

Если ваш бэкэнд и ваше приложение не работают по одному и тому же адресу, ваш браузер обычно не позволяет вам звонить бэкенду. Это должно быть функцией безопасности.

Чтобы разрешить вашему браузеру вызывать ваши API, добавьте заголовки Access-Control - **** к ответу вашего бэкэнда (при ответе из Spring).

См. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

Большинство основных c заголовков, которые допускают все источники:

Access-Control-Allow-Origin: *

Вот учебник для добавления этих заголовков в Spring: https://spring.io/guides/gs/rest-service-cors/

...