На стороне клиента я использую Ajax.post (jquery 1.5) с json.На стороне сервера я использую rest resteasy-jaxrs-2.0.1.GA.Я нашел где-то, что я должен добавить пару заголовков к ответу сервера, и я сделал следующий фильтр:
public void doFilter( ServletRequest req,
ServletResponse res,
FilterChain filterChain)
throws IOException, ServletException {
MyServletRequestWrapper httpReq = new MyServletRequestWrapper((HttpServletRequest)req);
HttpServletResponse httpRes = (HttpServletResponse)res;
HttpSession session = httpReq.getSession();
httpRes.addHeader(ACCESS_CONTROL_ALLOW_ORIGIN, "*");
httpRes.addHeader(ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
if (((HttpServletRequest) req).getMethod().equals("OPTIONS")){
httpRes.addHeader(ACCESS_CONTROL_ALLOW_METHODS, "GET, POST, OPTIONS, PUT, DELETE");
httpRes.addHeader(ACCESS_CONTROL_ALLOW_HEADERS, "content-type, x-requested-with, x-requested-by");
}
filterChain.doFilter(httpReq, httpRes);
}
Это работает хорошо, потому что каждый отдельный ответ GET выше заголовков добавляется.Проблема появляется, когда я хочу использовать запрос POST.Когда я использую Ajax.post, сначала сервер получает запрос OPTIONS, и у меня появляется следующая ошибка:
Failed executing OPTIONS [REST_PATH]
org.jboss.resteasy.spi.DefaultOptionsMethodException: No resource method found for options, return OK with Allow header
Чтобы устранить вышеуказанную ошибку, я пытался добавить метод вызова с тем жепуть как POST ([REST_PATH]), но с аннотацией @OPTION.В этом случае javac сказал мне, что символ: класс OPTIONS не может быть найден, даже если в прилагаемой библиотеке jaxrs есть класс OPTION.class.
Есть идеи, как это исправить?Буду очень признателен за любые подсказки.