Angular 2.0 中的 Http 请求和响应

Http request and response in Angular 2.0

我遇到了一个问题,我的 Web 服务(在 Spring 引导中编写)需要 5-6 分钟才能获得 http 响应。 我从 angular 发送了一个 http post 请求,但是 chrome 只等了 2 分钟就给了我一个空响应,因为没有来自服务器的响应。 但服务器会在 5 分钟后给出响应。 那么我该如何实现这种情况,因为我认为我的 http 连接会在 2 分钟后关闭,我想将其延长至 5-6 分钟。 供参考 我已经使用了 rxjs 超时功能,但它不起作用,默认超时 2 分钟总是有效。 谢谢

问题不在于 chrome 您必须使用 Proxying support in which dev-server makes use http-proxy-middleware package and the proxy options provided in this package is from underlying http-proxy library. 其中之一是

proxyTimeout:

timeout (in millis) when the proxy receives no response

默认值为 ~120 秒,如果 backend 未能在规定时间内响应,则会发出新请求。 在代理配置文件中使用 "timeout":360000 覆盖默认超时将解决问题。

{
  "/api/*": {
     "target":  {
       "host": "localhost",
       "protocol": "http:",
       "port": 8080
     },
     "secure": false,
     "changeOrigin": true,
     "logLevel": "debug",
     "timeout":360000
  
  }
}

您还需要在控制器中使用 @CrossOrigin 注释启用 Cross-Origin 对 RESTful Web 服务的请求 link.The @CrossOrigin 用于允许 Cross-Origin 资源共享 (CORS),以便我们在不同服务器上的 angular 应用程序 运行 可以从浏览器使用这些 API .

    @CrossOrigin(origins = "http://localhost:4200", maxAge = 3600)
    @RestController
    @RequestMapping({"/api"})
    public class UserController {
           ......
}

我假设你的 angular 在 port 4200 上 运行 具有上述配置,你可以使用你的 API。

注意proxy 配置用于在通过 ng serve 连接开发服务器时 运行 代理调用。在您 运行 ng build 之后,您负责 Web 服务器及其配置