Sto lavorando su un'applicazione web comprende UI-angolare, Server-Java, RESTEasy 3.0.9.Final per API REST chiamaNessuna intestazione è presente sulla risorsa richiesta - Resteasy
quando ho cercato di accedere al servizio resto da un altro dominio che ottiene sotto l'errore
non può caricare risposta alla richiesta di verifica preliminare non passa di controllo di controllo di accesso: intestazione No 'Access-Control-Allow-Origin' è presente sul risorsa richiesta L'origine 'http://localhost:8080' non è quindi consentita l'accesso.
Ho configurato il mio lato server per rispondere alle chiamate tra domini diversi e questo sta lavorando con il GET chiamata ma POST chiamata è la creazione di ERRORE
web.xml
<context-param>
<param-name>resteasy.providers</param-name>
<param-value>com.test.sample.app.CorsFeature</param-value>
</context-param>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.test.sample.app.Application</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
classe di servizio
@GET
@Path("/getnameAtt")
@Produces(MediaType.APPLICATION_JSON)
public Response getHostnameAttributes() {
return Response
.status(200)
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Headers",
"origin, content-type, accept, authorization")
.header("Access-Control-Allow-Credentials", "true")
.header("Access-Control-Allow-Methods",
"GET, POST, PUT, DELETE, OPTIONS, HEAD")
.header("Access-Control-Max-Age", "1209600")
.entity(new TestImpl().getHostNameAttributes())
.build();
}
@POST
@Path("/getSeq")
@Produces(MediaType.APPLICATION_JSON)
public Response getCurrentSequence(String request) {
return Response
.status(200)
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Headers",
"origin, content-type, accept, authorization")
.header("Access-Control-Allow-Credentials", "true")
.header("Access-Control-Allow-Methods",
"GET, POST, PUT, DELETE, OPTIONS, HEAD")
.header("Access-Control-Max-Age", "1209600")
.entity(new TestImpl().getCurrentSeq(request))
.build();
}
Da quando sono nuovo a restea non sono in grado di capire perché questo non funzionava. Qualsiasi aiuto sarebbe molto apprezzato. Attendo una tua risposta.
Grazie
Grazie per la risposta. Ho usato quel CorsFilter e annotato con @Provider. ma quella classe non è nemmeno chiamata. Devo aggiungere qualcosa nel web.xml – user3595995
L'esempio a cui mi sono collegato era per la ricerca di risorse. Se si registrano esplicitamente tutte le risorse e i provider, è sufficiente registrare il 'CorsFilter' nella classe' Application'. Oppure registra la 'Caratteristica'. In entrambi i casi funziona. La "caratteristica" non è necessaria però.Puoi semplicemente registrare 'CorsFilter' nella tua sovrascrittura di' getSingletons() 'nella tua classe' Application' –
se la richiesta di preflight è esplicita o se è gestita internamente dal browser? Devo inviare una richiesta di preflight OPTION prima di inviare la richiesta effettiva? Sono bloccato a un errore simile. –