Mengendalikan CORS dengan JAX-RS Menggunakan Jersi
Masalah: Anda menghadapi masalah CORS semasa mengendalikan permintaan dengan JAX-RS dan Jersi. Khususnya, pelayan tidak menetapkan pengepala CORS yang diperlukan, membawa kepada ralat "Tiada pengepala 'Access-Control-Allow-Origin' hadir pada sumber yang diminta."
Penyelesaian: Untuk mengendalikan CORS dalam JAX-RS dengan Jersi, anda perlu melaksanakan ContainerResponseFilter. Perbezaan dalam pelaksanaan bergantung pada sama ada anda menggunakan Jersi 1.x atau 2.x.
Jersi 2.x:
import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.core.MultivaluedMap; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { MultivaluedMap<String, Object> headers = responseContext.getHeaders(); headers.add("Access-Control-Allow-Origin", "*"); headers.add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type"); headers.add("Access-Control-Allow-Credentials", "true"); headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); } }
Jersi 1.x:
import com.sun.jersey.spi.container.ContainerResponse; import com.sun.jersey.spi.container.ContainerResponseFilter; @Provider public class CORSFilter implements ContainerResponseFilter { @Override public ContainerResponse filter(ContainerResponse response) { response.getHttpHeaders().add("Access-Control-Allow-Origin", "*"); response.getHttpHeaders().add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type"); response.getHttpHeaders().add("Access-Control-Allow-Credentials", "true"); response.getHttpHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD"); return response; } }
Tambahan Nota:
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Isu CORS dalam JAX-RS dengan Jersi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!