java - resource - jax rs enable cors
Servicio web RESTful: cómo establecer encabezados en java para aceptar XMLHttpRequest permitido por Access-Control-Allow-Origin (1)
Lea aquí sobre su problema CORS: http://enable-cors.org/
Compruebe si este le ayuda en su método getMsg ():
return Response.ok(output).header("Access-Control-Allow-Origin", "*").build();
Si lo anterior no funciona, intente agregar el filtro Jersey a su servicio. Crear clase de filtro:
package your.package;
public class CORSFilter implements ContainerResponseFilter {
@Override
public ContainerResponse filter(ContainerRequest creq, ContainerResponse cresp) {
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "*");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS, HEAD");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
return cresp;
}
}
Y regístrese más tarde para ganar web.xml con:
<servlet>
<servlet-name>CORS Filter</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>your.package.CORSFilter</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>CORS Filter</servlet-name>
<url-pattern>/webservices/*</url-pattern>
</servlet-mapping>
Otra solución es usar este código dentro de su recurso para proporcionar OPTIONS
para el navegador. Pon esto en la clase donde tienes @GET.
@OPTIONS
@Path("/getsample")
public Response getOptions() {
return Response.ok()
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "POST, GET, PUT, UPDATE, OPTIONS")
.header("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With").build();
}
Si no es así, intente intercambiar el "*"
provisto para el encabezado "Access-Control-Allow-Origin" con su dominio personalizado donde tiene acceso a este recurso. Ig Si llama a esto desde http://localhost::8080
use algo como esto ("Access-Control-Allow-Origin", "http://localhost:8080")
lugar de asterisco "*"
.
Tengo un servicio web RESTful que devolverá cadena y fue escrito en Java (JAX-WS). Mi problema es cuando envío una solicitud a ese servicio web con una URL como:
http://localhost:8080/project/webservices/getlist/getListCustomers
En la consola me está dando el siguiente mensaje de error:
XMLHttpRequest no puede cargar url El host local de origen no está permitido por Access-Control-Allow-Origin
¿Cómo puedo manejar este problema?
Código Java:
@GET
@Path("/getsample")
public Response getMsg() {
String output = "Jersey say : " ;
return Response.status(200).entity(output).build();
}