因此不允许原点访问。响应有HTTP状态代码503响应在CORS调用后出现

时间:2015-10-03 21:59:28

标签: java angularjs spring heroku

使用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的超时,有人知道如何改变吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试添加:

response.setHeader("Transfer-Encoding", "chunked");

这将阻止Heroku关闭连接。 Heroku请求超时为30秒,如果它没有看到chunked头,它将发送Connection: close头(这是允许的,因为它是逐跳头)。

答案 1 :(得分:-2)

我用后进程解决了这个问题。