Chr*_*ers 2 rest reactjs spring-boot
我现在正在学习使用React,我遇到了一个问题:我想对我的Java Spring Boot后端(Tomcat)做出反应.React在端口3000(默认)上运行,而我的Tomcat服务器在端口8080上运行(默认).现在,当我进行REST调用时,我收到以下错误
script.js:13 GET http://localhost:8080/api/path?p=test net::ERR_CONNECTION_REFUSED
Run Code Online (Sandbox Code Playgroud)
我的休息电话看起来像:
fetch('http://localhost:8080/api/path?p=test')
.then(res => {
console.log(res);
});
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我真的不知道.
一个net::ERR_CONNECTION_REFUSED错误通常是抛出当你的前端(阵营应用程序)无法连接到后端(Spring的启动应用程序).发生这种情况的原因有很多,例如:
在您的情况下,它似乎是后端应用程序无法正常运行.
您的第二个问题与CORS有关,CORS是一种阻止JavaScript连接到不在同一(子)域和端口上的其他API /网站的机制.在你的情况下,你的前端运行在与你后端不同的端口上,这意味着你必须处理CORS.
要处理CORS,您必须在后端添加标头(即Access-Contol-Allow-Origin错误提示的标头).使用Spring,您可以通过向控制器添加以下注释来实现:
@CrossOrigin(origins = "http://localhost:3000")
Run Code Online (Sandbox Code Playgroud)
或者您可以使用过滤器全局配置CORS或使用WebMvcConfigurer:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**").allowedOrigins("http://localhost:3000");
}
};
}
Run Code Online (Sandbox Code Playgroud)
正如@Lutz Horn的评论中所提到的,这也在Spring指南中有所描述.
| 归档时间: |
|
| 查看次数: |
1464 次 |
| 最近记录: |