As it is answered here, HttpServlet.doOptions() method has to be overridden the following way:
import java.io.IOException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @SuppressWarnings("serial") @WebServlet( name = "MyServlet", urlPatterns = {"/myservlet"} ) public class MyServlet extends HttpServlet { @Override protected void doOptions
(
HttpServletRequest req,
HttpServletResponse resp
) throws IOException { resp.setHeader("Access-Control-Allow-Origin", "*"); resp.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS"); resp.setHeader("Access-Control-Allow-Headers", "*"); } @Override protected void doPost
(
HttpServletRequest req,
HttpServletResponse resp
) throws IOException { resp.setHeader("Access-Control-Allow-Origin", "*"); resp.setContentType("text/plain"); resp.setCharacterEncoding("UTF-8"); resp.getOutputStream().println("OK"); } @Override protected void doGet
(
HttpServletRequest req,
HttpServletResponse resp
) throws IOException { doPost(req, resp); } }