我有一个 Angular5 前端通过 localhost:4200 的"ng serve"运行。
我的后端是一个使用 vert.x 并在 localhost:8080 上运行的 Java 应用程序。
我正在尝试做的是让前端使用 REST 与后端通信。 为此,我从前端发送一个简单的GET请求,如下所示:
@Injectable()
export class HttpService {
constructor(private http:HttpClient) {}
getTest() {
this.http.get('http://localhost:8080/api/whiskies').subscribe(data => console.log(data));
}
}
我的后端服务器如下所示:
@Override
public void start(Future<Void> fut) {
Router router = Router.router(vertx);
router.route("/").handler(routingContext -> {
HttpServerResponse response = routingContext.response();
response.putHeader("content-type", "text/html").end("<h1>Hello from my first Vert.x 3 application</h1>");
});
router.get("/api/whiskies").handler(this::getAll);
vertx.createHttpServer().requestHandler(router::accept).listen(
config().getInteger("http.port", 8080), result -> {
if (result.succeeded()) {
fut.complete();
} else {
fut.fail(result.cause());
}
});
}
private void getAll(RoutingContext routingContext) {
routingContext.response().putHeader("content-type", "application/json; charset=utf-8")
.end(Json.encodePrettily(products.values()));
}
现在我可以在浏览器控制台中看到,我的 GET 请求已成功发送。在浏览器控制台中,我还可以看到,GET请求的答案是所需的JSON。 后端服务器还会记录 GET 请求的成功处理。
但是,在浏览器控制台中,我收到错误
的 HTTP 失败响应(未知 URL(:0 未知错误
有没有人有任何想法,如何解决这个问题?
谷歌搜索已经为我指出了各个方向:
- 我的后端服务器显然不提供SSL证书,但是 节点.js可能会请求一个。
- 这可能是 CORS 的问题
但我也不知道如何解决这些事情...
在你的回应中,你把这个,以防止CORS问题:
reponse.putHeader("Access-Control-Allow-Origin", "*");