Crossorigin не работает - PullRequest
0 голосов
/ 27 июня 2018

Реакция заставляет меня говорить, что запрос о происхождении заблокирован: одна и та же политика происхождения запрещает чтение удаленного ресурса по адресу http://localhost:8080/users. (причина: отсутствует заголовок CORS Control Access-Control-Allow-Origin ’).

Странно думать, что это сработало и перестало работать без каких-либо изменений в коде контроллера ...

UserController.java

@RestController
@CrossOrigin
@RequestMapping(value = "/users")
public class UserController {

@Autowired
private UserService userService;

@RequestMapping(value = "/{userId}", method = RequestMethod.GET)
private User findOne(@PathVariable("userId") Integer userId) {
    return userService.findOne(userId);
}

@RequestMapping(method = RequestMethod.GET)
private List<User> findAll() {
    return userService.findAll();
}

@RequestMapping(method = RequestMethod.POST)
private User create(@RequestBody User user) {
    user.setId(null); // To ensure we create instead of update
    return userService.save(user);
}

@RequestMapping(value = "/{userId}", method = RequestMethod.PUT)
private User update(@PathVariable("userId") Integer userId, @RequestBody User user) {
    user.setId(userId); // To ensure we update instead of create
    return userService.save(user);
}

@RequestMapping(value = "/{userId}", method = RequestMethod.DELETE)
private void delete(@PathVariable("userId") Integer userId) {
    final User user = userService.findOne(userId);
    userService.delete(user);
}
}

и это мой выбор на React

 fetch('http://localhost:8080/users', {
    method: 'GET',
    headers: {
    'content-type': 'application/json'
  },
}).then(response => { return response.json();
}).then(data => {
  this.setState({users:data});
});
}

Есть причина, по которой он внезапно перестал работать?

редактирование:

Я попытался создать новый чистый проект maven и скопировал все пакеты в новый проект, и теперь он работает, но я до сих пор не знаю, почему он перестал работать, код такой же, и теперь он работает.

1 Ответ

0 голосов
/ 27 июня 2018

Если вы используете Spring Security и хотите использовать CORS глобально в своем проекте, попробуйте добавить его в конфигурацию:

@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {

    httpSecurity
            .cors()
            .and()
            ........ other config

}

Но перед этим попробуйте следующие подходы. Чтобы применить CORS на уровне класса, используйте его так:

@CrossOrigin(origins = "http://domain2.com", maxAge = 3600)
@Controller
public class SomeController{

}

или используйте его на уровне метода следующим образом:

@CrossOrigin("http://example.com")
@RequestMapping("/some")
public Account retrieve() {
    // ...
}

OR

@CrossOrigin(origins = "*")
@RequestMapping("/some")
public Account retrieve() {
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...