请让我说出跨域请求被阻止:“同一个源策略”不允许读取http://localhost:8080/users处的远程资源。 (原因:CORS标头“ 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项目并将所有包复制到该新项目中,现在它可以工作了,但是我仍然不知道为什么它停止工作,代码相同,并且现在可以工作。
答案 0 :(得分:0)
如果您使用的是 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() {
// ...
}