Rumah > Java > javaTutorial > Bagaimana untuk Menyelesaikan Isu CORS dalam JAX-RS dengan Jersi?

Bagaimana untuk Menyelesaikan Isu CORS dalam JAX-RS dengan Jersi?

DDD
Lepaskan: 2024-12-19 15:34:14
asal
918 orang telah melayarinya

How to Solve CORS Issues in JAX-RS with Jersey?

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

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

Tambahan Nota:

  • Pastikan penapis CORS didaftarkan dengan objek ResourceConfig.
  • Untuk pengendalian yang lebih baik, pertimbangkan untuk menggunakan pelaksanaan yang lebih mantap yang membezakan antara permintaan CORS mudah dan pra-penerbangan .
  • Rujuk pelaksanaan CORSFilter dalam RESTeasy untuk lebih komprehensif contoh.

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan