我尝试与我的Java/Spring Boot后端传达我的角前端。但是终端向我展示了这个错误:
[hpm]试图从本地主机来代替/api/dados时发生错误:4500至http:/localhost:8080(econnrefused)(econnrefused)(https://nodejs.org/api/erpi/errors.html.html#errors.html#errors_common_common_system_system_semrors)P>
这是我的exmemple.service.ts(Angular)代码。在这里,我请求数据:
import {Injectable} from "@angular/core";
import {Http, Response} from "@angular/http";
import 'rxjs/Rx';
@Injectable()
export class ExService{
constructor(private http: Http){
}
getName(){
return this.http.get("/api/dados").map(
(response: Response) =>{
return response.json();
}
);
}
}
这是我的exemple.java(Java代码)。它负责发送数据:
package com.lucas.bef.Envia;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/dados")
public class Dados {
String teste;
public Dados(){
this.teste = "LUCAS";
}
public void setNome(String nome){
this.teste = nome;
}
@GetMapping( value = {"","/"})
public String getNome(){
return teste;
}
}
如果我启动了春季应用程序...终端向我显示一条消息,tomcat以8080端口开始。
i创建一个configuration proxy文件(proxy-conf.json):
{
"/api":{
"target": "http:/localhost:8080",
"secure": false
}
}
请有人帮我。我需要这样做。非常重要。谢谢!
问题似乎与您一起运行两个应用程序(前端和后端)在不同的端口上。这样的请求称为CORS。您可以在Spring-Boot应用中启用CORS。或要临时测试,请下载此Chrome插件
首先,您已经设置了" target":" http:/localhost:8080",错误!是http://localhost:8080
也请尝试重写如下服务的请求
getName(){
return this.http.get("http://localhost:8080/api/dados").map(
(response: Response) =>{
return response.json();
}
);
}
检查它是否有效!您必须订阅服务方法的可观察响应
还必须允许Spring服务器与Angular应用程序进行通信。为此,您必须从后端配置COR
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.filter.GenericFilterBean;
public class CORSFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
if (((HttpServletRequest) req).getMethod().equals("OPTIONS")) {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "http://localhost:4500");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT,DELETE");
response.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, "
+ "X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
} else {
chain.doFilter(req, res);
}
}
}