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
Lepaskan: 2024-12-23 20:25:13
asal
883 orang telah melayarinya

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");
    }
}
Salin selepas log masuk

Mendaftarkan Penapis

Penapis CORS boleh didaftarkan dalam ResourceConfig seperti berikut:

final ResourceConfig resourceConfig = new ResourceConfig();
resourceConfig.register(CORSFilter.class);
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan