CORS-Handhabung in JAX-RS mit Jersey
Einführung
Cross-Origin Resource Sharing (CORS) ermöglicht eine sichere Kommunikation zwischen einer Webanwendung und Ressourcen, die in einer anderen Domäne gehostet werden. Der Umgang mit CORS ist in RESTful-APIs unerlässlich, um domänenübergreifende Anfragen zu ermöglichen. JAX-RS bietet einen praktischen Mechanismus für die Handhabung von CORS mithilfe benutzerdefinierter Filter.
Filterimplementierung für Jersey 2.x
In Jersey 2.x kann ein ContainerResponseFilter verwendet werden um CORS-Header zu Antworten hinzuzufügen. Der folgende Filter fügt die notwendigen Header hinzu:
import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.core.MultivaluedMap; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { MultivaluedMap<String, String> headers = responseContext.getHeaders(); headers.add("Access-Control-Allow-Origin", "*"); headers.add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With"); headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); } }
Registrieren des Filters
Der CORS-Filter kann in ResourceConfig wie folgt registriert werden:
final ResourceConfig resourceConfig = new ResourceConfig(); resourceConfig.register(CORSFilter.class);
Filterimplementierung für Jersey 1.x
Für Jersey 1.x kann auch ein ContainerResponseFilter verwendet werden:
import com.sun.jersey.spi.container.ContainerResponseFilter; import com.sun.jersey.spi.container.ContainerResponse; import com.sun.jersey.spi.container.ContainerRequestContext; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public ContainerResponse filter(ContainerRequestContext requestContext, ContainerResponse response) { response.getHttpHeaders().add("Access-Control-Allow-Origin", "*"); response.getHttpHeaders().add("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With"); response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); return response; } }
Web.xml-Konfiguration für Jersey 1.x
Konfigurieren Sie in web.xml den Filter wie folgt:
<init-param> <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name> <param-value>com.yourpackage.CORSFilter</param-value> </init-param>
Das obige ist der detaillierte Inhalt vonWie implementiert man CORS-Handling in JAX-RS mit Jersey?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!