Rumah >Java >javaTutorial >Bagaimana untuk Melaksanakan Pengendalian CORS dalam JAX-RS dengan Jersi?

Bagaimana untuk Melaksanakan Pengendalian CORS dalam JAX-RS dengan Jersi?

Linda Hamilton
Linda Hamiltonasal
2024-12-23 20:25:13881semak imbas

How to Implement CORS Handling in JAX-RS with Jersey?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn