Leggi qui il tuo problema CORS: http://enable-cors.org/
Controllare se questo vi aiuterà nel vostro getMsg() metodo:
return Response.ok(output).header("Access-Control-Allow-Origin", "*").build();
Se sopra non lavoro prova ad aggiungere il filtro Jersey al tuo servizio. Crea classe di 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;
}
}
e registra più avanti vincere 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>
Un'altra soluzione è quella di utilizzare questo codice all'interno della vostra risorsa per fornire
OPTIONS
per il browser. Metti questo nella classe in cui hai @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();
}
Se non di questo lavoro, provare a sostituire il
"*"
previsto intestazione "Access-Control-Allow-Origin" con il tuo dominio personalizzato in cui si accedere a questa risorsa. I.G. Se si chiama questo da
http://localhost::8080
utilizzare qualcosa come questo
("Access-Control-Allow-Origin", "http://localhost:8080")
anziché asterisco
"*"
.
questa modifica funzionante su IE, non funzionante su chrome ancora lo stesso numero – ChiranjeeviIT
aggiornato. prova la soluzione numero due. – flyer
dopo una lunga ricerca, la tua soluzione sembra essere migliore e buona, grazie per la tua risposta, tienimi aggiornato se trovi una soluzione permanente. – ChiranjeeviIT