Rumah > Java > javaTutorial > Bagaimana untuk Melaksanakan Penapisan CORS dengan JAX-RS dan Jersi (1.x dan 2.x)?

Bagaimana untuk Melaksanakan Penapisan CORS dengan JAX-RS dan Jersi (1.x dan 2.x)?

Linda Hamilton
Lepaskan: 2024-12-17 04:09:24
asal
804 orang telah melayarinya

How to Implement CORS Filtering with JAX-RS and Jersey (1.x and 2.x)?

Mengendalikan CORS dengan JAX-RS dan Jersi

Cross-Origin Resource Sharing (CORS) membolehkan pertukaran data selamat antara sumber pada domain yang berbeza. Untuk mengendalikan CORS dalam aplikasi Java menggunakan JAX-RS dengan Jersey, ContainerResponseFilter boleh digunakan. Dalam artikel ini, kami akan meneroka cara melaksanakan penapisan CORS dengan kedua-dua versi Jersey 2.x dan 1.x.

Jersey 2.x

Untuk Jersi 2. x, pelaksanaan ContainerResponseFilter berikut memenuhi tujuan kami dengan berkesan:

import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext request, ContainerResponseContext response) throws IOException {
        response.getHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHeaders().add("Access-Control-Allow-Headers", "CSRF-Token, X-Requested-By, Authorization, Content-Type");
        response.getHeaders().add("Access-Control-Allow-Credentials", "true");
        response.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
    }
}
Salin selepas log masuk

Jersi 1.x

Untuk Jersi 1.x, pelaksanaan ContainerResponseFilter berikut harus digunakan:

import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;

@Provider
public class CORSFilter implements ContainerResponseFilter {
    @Override
    public ContainerResponse filter(ContainerRequest request, 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;
    }
}
Salin selepas log masuk

Mengkonfigurasi Penapis

Untuk mendaftarkan penapis ini dalam aplikasi anda, anda boleh menggunakan pengimbasan pakej atau pendaftaran eksplisit. Untuk Jersey 2.x, imbasan pakej sepatutnya mencukupi, manakala Jersey 1.x mungkin memerlukan pendaftaran eksplisit dalam web.xml atau ResourceConfig.

Pertimbangan Tambahan

Sila ambil perhatian bahawa pelaksanaan ini adalah pendekatan yang mudah dan mungkin tidak menangani semua butiran berkaitan CORS. Untuk penyelesaian yang lebih mantap dan boleh disesuaikan, adalah disyorkan untuk meneroka CorsFilter yang disediakan oleh RESTeasy, yang mematuhi spesifikasi CORS terkini.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penapisan CORS dengan JAX-RS dan Jersi (1.x dan 2.x)?. 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