Rumah  >  Artikel  >  Java  >  Petua untuk pelaksanaan Spring Boot dan menyelesaikan masalah merentas domain

Petua untuk pelaksanaan Spring Boot dan menyelesaikan masalah merentas domain

王林
王林asal
2023-06-22 21:38:281766semak imbas

Dengan populariti pemisahan bahagian hadapan dan belakang, masalah silang domain antara bahagian hadapan dan bahagian belakang secara beransur-ansur menjadi masalah yang dihadapi oleh pembangun web. Isu merentas domain melibatkan dasar asal yang sama penyemak imbas, iaitu, secara lalai, penyemak imbas hanya membenarkan halaman untuk memulakan permintaan kepada pelayan asal yang sama, tetapi bukan kepada pelayan dengan nama domain lain. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Spring Boot untuk melaksanakan dan menyelesaikan masalah merentas domain.

  1. Apakah isu merentas domain?

Masalah merentas domain bermakna dalam penyemak imbas, apabila aplikasi web yang berjalan di bawah nama domain A menghantar permintaan kepada aplikasi web di bawah nama domain B, penyemak imbas akan menyekat permintaan kerana ini Tidak mematuhi dasar asal yang sama penyemak imbas. Dasar asal yang sama bermakna bahawa penyemak imbas hanya membenarkan halaman untuk memulakan permintaan kepada pelayan jika mereka mempunyai protokol, nama domain dan nombor port yang sama.

  1. Spring Boot menyokong kaedah merentas domain untuk menyelesaikan masalah merentas domain

Spring Boot menyediakan pelbagai kaedah untuk menyelesaikan masalah merentas domain kaedah yang lebih biasa.

2.1 Gunakan anotasi @CrossOrigin

Dalam Spring Boot, anda boleh menggunakan anotasi @CrossOrigin untuk melaksanakan permintaan merentas domain. Anotasi @CrossOrigin boleh digunakan pada peringkat kelas atau kaedah dan boleh menentukan beberapa pilihan untuk CORS, seperti nama domain yang dibenarkan untuk akses merentas domain, kaedah permintaan yang dibenarkan, dsb. Berikut ialah contoh kod menggunakan anotasi @CrossOrigin:

@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://localhost:8080", maxAge = 3600)
public class ApiController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}

Dalam kod di atas, anotasi @CrossOrigin digunakan dan nama domain merentas domain ditentukan sebagai http://localhost:8080, dan masa cache maksimum ditetapkan sebagai 1 jam. Dengan cara ini, apabila membuat permintaan Ajax bahagian hadapan, anda boleh mengakses http://localhost:8080 merentas domain. Perlu diingatkan bahawa anotasi @CrossOrigin harus ditambahkan pada kelas atau kaedah pengawal, bukan pada parameter @RequestBody.

2.2 Konfigurasikan WebMvcConfigurer

Cara lain untuk menyelesaikan masalah merentas domain ialah dengan melaksanakan antara muka WebMvcConfigurer, mengatasi kaedah addCorsMappings dan menggunakan CorsRegistry untuk mengkonfigurasi nama domain yang membenarkan capaian merentas domain. Berikut ialah contoh kod:

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedOrigins("http://localhost:8080")
                .allowedMethods("GET", "POST")
                .maxAge(3600);
    }
}

Dalam kod di atas, kelas CorsConfig melaksanakan antara muka WebMvcConfigurer dan meliputi kaedah addCorsMappings, membenarkan hanya GET dan POST permintaan akses di bawah nama domain http://localhost:8080 . Laluan yang mengandungi "/api" akan tertakluk kepada sekatan CORS, manakala laluan lain tidak akan mempunyai sebarang sekatan.

2.3 Konfigurasikan Penapis

Menggunakan penapis juga merupakan cara untuk menyelesaikan masalah merentas domain. Berikut ialah contoh penggunaan penapis:

@Component
public class CorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws ServletException, IOException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");
        response.setHeader("Access-Control-Allow-Methods", "GET, POST");
        response.setHeader("Access-Control-Max-Age", "3600");
        chain.doFilter(req, res);
    }
}

Dalam kod di atas, kelas CorsFilter melaksanakan antara muka Penapis dan menambah Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control- Minta maklumat pengepala seperti Max-Age membenarkan akses kepada permintaan GET dan POST di bawah nama domain http://localhost:8080.

  1. Ringkasan

Artikel ini memperkenalkan tiga kaedah biasa untuk menggunakan rangka kerja Spring Boot untuk melaksanakan dan menyelesaikan masalah merentas domain. Sekatan dan kawalan CORS boleh dicapai dengan menggunakan anotasi @CrossOrigin, mengkonfigurasi WebMvcConfigurer dan menggunakan penapis. Dalam pembangunan sebenar, anda harus memilih kaedah yang paling sesuai untuk menyelesaikan masalah merentas domain mengikut keperluan anda sendiri.

Atas ialah kandungan terperinci Petua untuk pelaksanaan Spring Boot dan menyelesaikan masalah merentas domain. 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