使用Spring MVC进行CORS设置(JAVA APPLICATION)
@Component
@WebFilter(urlPatterns = {"/*"}, description = "CORS")
public class SimpleCORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "86400");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
我尝试对我的应用程序进行 POST 并且帖子正在运行,但是在运行过程中,Y收到此错误:
XMLHttpRequest无法加载https://finaldomain/start/。没有 '存在Access-Control-Allow-Origin https://originDomain/标头 在请求的资源上。因此不允许原点访问。 响应的HTTP状态代码为503。
我的两个应用程序都部署在 Heroku 中,帖子正在使用 Angular 。
Heroku日志:
2015-10-03T21:50:14.474181 + 00:00 heroku [router]:at = error code = H12 desc =" Request timeout" method = POST path =" / start /" host = finaldomain request_id = 84f76fea-0226-43b0-898d-e753681d7622 fwd =" 190.1 95.196.252" dyno = web.1 connect = 1ms service = 30000ms status = 503 bytes = 0
我调查的更多,我了解到Heroku的超时,有人知道如何改变吗?
谢谢!
答案 0 :(得分:0)
尝试添加:
response.setHeader("Transfer-Encoding", "chunked");
这将阻止Heroku关闭连接。 Heroku请求超时为30秒,如果它没有看到chunked头,它将发送Connection: close
头(这是允许的,因为它是逐跳头)。
答案 1 :(得分:-2)
我用后进程解决了这个问题。