簡體   English   中英

無法為JAX-RS Web服務啟用CORS

[英]Could not enable CORS for JAX-RS Web Service

當我使用http.post請求通過Angular2調用我的服務時,我得到

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

我的JAX-RS服務

@Override
    @POST
    @Path("/getWsCallReports")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getWsCallReports(Query query) {
        try {
            LOG.info("getWsCallReports called for " + query);
            return Response.status(200)
                .header("Access-Control-Allow-Origin", "*")
                .header("Access-Control-Allow-Headers", "origin, content-type, accept, authorization")
                .header("Access-Control-Allow-Credentials", "true")
                .header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD")
                .header("Access-Control-Max-Age", "1209600").entity(wsCallReportDao.getReports(query)).build();
        } catch (Exception e) {
            return Response.serverError().build();
        }
    }

我也嘗試添加簡單的HTTP過濾器,該過濾器定義了所有請求的所有必要標頭

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse)  servletResponse;

        // TODO: development only
        response.addHeader("Access-Control-Allow-Origin", "*");

        response.addHeader("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
        response.addHeader("Access-Control-Allow-Credentials", "true");
        response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
        response.addHeader("Access-Control-Max-Age", "1209600");
        filterChain.doFilter(servletRequest, servletResponse);
    }

但這沒有幫助。 我究竟做錯了什么?

以防萬一,我正在使用Java EE 6,但無法實現ContainerResponseFilter 我相信沒有它就可以做到。

這是JBoss EAP 6.2(RestEasy 2.3.7.final)內置的JAX-RS實現中的錯誤。 升級到JBoss EAP 7.0已解決了該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM