我陷入了一个问题,我的webservice(用Spring编写)用了5-6分钟来获得http响应。 我发送了一个来自angular的http post请求,但chrome等待只有2分钟给我一个null响应,因为没有来自服务器的响应。 但服务器将在5分钟后给出响应。 那么我怎么能实现这个场景,因为我认为我的http连接在2分钟后关闭,我想把它延长到5-6分钟。 FYI 我已经使用了rxjs超时功能,但它不起作用,默认超时2分钟总是获胜。 谢谢
答案 0 :(得分:4)
问题不在chrome
您必须使用 Proxying support
,其中dev-server使用 http-proxy-middleware package
和此程序包中提供的代理选项来自基础 http-proxy library
。
其中一个是
proxyTimeout :
代理未收到响应时超时(以毫秒为单位)
默认值为~120秒,如果backend
未能在规定时间内响应,则会发出新请求。
使用代理配置文件中的"timeout":360000
覆盖默认超时将解决问题。
{
"/api/*": {
"target": {
"host": "localhost",
"protocol": "http:",
"port": 8080
},
"secure": false,
"changeOrigin": true,
"logLevel": "debug",
"timeout":360000
}
}
您还需要在控制器链接中使用 @CrossOrigin
注释为RESTful Web服务启用跨源请求。@CrossOrigin
用于允许跨源资源共享(CORS),以便在不同服务器上运行的角度应用程序可以从浏览器中使用这些API。
@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600)
@RestController
@RequestMapping({"/api"})
public class UserController {
......
}
我认为你的角度在port
4200上运行,配置如上,你可以使用你的API。
注意:proxy
配置用于在通过ng serve
运行开发服务器时代理呼叫。运行ng build
后,您负责Web服务器及其配置