Pengendalian CORS dalam JAX-RS dengan Jersi
Pengenalan
Perkongsian Sumber Rentas Asal (CORS) membolehkan komunikasi selamat antara aplikasi web dan sumber yang dihoskan pada domain yang berbeza. Mengendalikan CORS adalah penting dalam API RESTful untuk membenarkan permintaan merentas domain. JAX-RS menyediakan mekanisme yang mudah untuk mengendalikan CORS menggunakan penapis tersuai.
Pelaksanaan Penapis untuk Jersi 2.x
Dalam Jersi 2.x, ContainerResponseFilter boleh digunakan untuk menambah pengepala CORS pada respons. Penapis berikut menambah pengepala yang diperlukan:
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"); } }
Mendaftarkan Penapis
Penapis CORS boleh didaftarkan dalam ResourceConfig seperti berikut:
final ResourceConfig resourceConfig = new ResourceConfig(); resourceConfig.register(CORSFilter.class);
Pelaksanaan Penapis untuk Jersi 1.x
Untuk Jersi 1.x, ContainerResponseFilter boleh digunakan juga:
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; } }
Konfigurasi Web.xml untuk Jersi 1.x
Dalam web.xml, konfigurasikan penapis seperti berikut:
<init-param> <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name> <param-value>com.yourpackage.CORSFilter</param-value> </init-param>
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengendalian CORS dalam JAX-RS dengan Jersi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!