Java 由于CORS,无法向springboot应用程序发出请求
我试图向heroku上托管的springboot应用程序发出POST请求Java 由于CORS,无法向springboot应用程序发出请求,java,spring-boot,cors,Java,Spring Boot,Cors,我试图向heroku上托管的springboot应用程序发出POST请求 const email = 'x@x.com'; const password = 'x'; const data = JSON.stringify({ email, password }); fetch( 'https://culinareat-test.herokuapp.com/api/user/users/_login', { method: 'POST',
const email = 'x@x.com';
const password = 'x';
const data = JSON.stringify({
email,
password
});
fetch(
'https://culinareat-test.herokuapp.com/api/user/users/_login',
{
method: 'POST',
headers : {
'Accept' : 'application/json',
'Content-Type' : 'application/json'
},
body : data,
}
).then(res => {
console.log(res);
})
我的回答是:这是我的springboot应用程序上的控制器:
@RestController
@AllArgsConstructor
public class UserController {
private final UserService userService;
@RequestMapping(method = RequestMethod.POST, value = "/user/users/_login")
public LoginResponse logUserIn(@RequestBody LoginRequest loginRequest, HttpServletResponse response, HttpServletRequest request){
return userService.logUserIn(loginRequest, response, request);
}
//another endpoints
}
我试图从我刚刚在stackoverflow上读到的另一篇文章中做到这一点:
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("*");
}
}
但是,它什么也不做,我仍然不能做这个请求。
有什么建议我该怎么做?服务器端有什么需要添加的吗?提前谢谢 您需要在控制器中添加注释@CrossOrigin
@RestController
@CrossOrigin(origins = "*", maxAge = 3600)
@AllArgsConstructor
public class UserController {
private final UserService userService;
@RequestMapping(method = RequestMethod.POST, value = "/user/users/_login")
public LoginResponse logUserIn(@RequestBody LoginRequest loginRequest, HttpServletResponse response, HttpServletRequest request){
return userService.logUserIn(loginRequest, response, request);
}
//another endpoints
}
请记住,跨源问题是由浏览器引起的。默认情况下,如果您在origin
http://localhost
,您不能在后端为localhost
指定CORS
Chrome等浏览器不允许在源http://localhost
以跨来源方式共享资源。见答案
解决办法很简单。将域解析为hosts
文件中的127.0.0.1
,例如example.com
。然后请求example.com:8080
或example.com
加载前端应用程序,并从example.com
来源发布请求
此外,您还可以通过导航到
Network
选项卡并复制、粘贴以下两个标题来调试CORS
access-control-allow-credentials: true
access-control-allow-origin: http://example.com/
我试过了,但仍然收到了与上面相同的响应。你可以看到这篇[文章](),我认为你需要实现WebSecurityConfigureAdapter类。你能更具体地描述我应该实现的代码吗?我已经编写了http.cors()和().csrf().disable()在添加@CrossOrigin annotation之后,我可以看到响应吗上面的响应没有任何更改