Estoy haciendo una solicitud HTTPS a una API privada (Itop alojada), recibo una respuesta, pero obtengo el error CORS Multiple Origin Not Allow , por lo que mi programa JavaScript no puede usar el contenido de la respuesta.
Se supone que debo tener autorización CORS
Las solicitudes son POST , hechas con fetch, no hay una solicitud de verificación previa ( OPTIONS ) realizada antes (fetch las hizo solo para mi otra solicitud GET API pero no aquí)
Además, el tiempo de respuesta del servidor es largo para Firefox (~ 2 s), pero no parece cambiar nada.
No está permitido enviar múltiples encabezados Access-Control-Allow-Origin o múltiples orígenes en un encabezado en la misma respuesta. En los comentarios, describió dos mismos encabezados Access-Control-Allow-Origin en una respuesta. Incluso dos mismos orígenes no están permitidos. Elimine un encabezado en el código de back-end.
Firefox es el mejor navegador para identificar este problema, puede solucionar este problema siguiendo esta ruta. cuando envía una solicitud desde el frontend, y luego la respuesta vendrá desde el backend. pero el navegador no puede acceder a javascript. este es el error cors.
1.abra su backend, luego cree un paquete llamado CorsFilter. 2. y luego cree un servlet de filtro 3. pegue este código
@WebFilter(filterName = "CorsFilter", urlPatterns = "/*") public class CorsFilter extends HttpFilter { @Override protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException { String origin = req.getHeader("Origin"); if (origin != null && origin.toLowerCase().contains(getServletContext().getInitParameter("origin"))) { res.setHeader("Access-Control-Allow-Origin", origin); res.setHeader("Access-Control-Allow-Headers", "Content-Type"); res.setHeader("Access-Control-Expose-Headers", "Content-Type"); if (req.getMethod().equals("OPTIONS")) { res.setHeader("Access-Control-Allow-Methods", "OPTIONS, GET, PUT, POST, DELETE, HEAD"); } } chain.doFilter(req, res); } }