Rumah > Java > javaTutorial > Bagaimana untuk menyelesaikan isu akses merentas domain dalam Java

Bagaimana untuk menyelesaikan isu akses merentas domain dalam Java

王林
Lepaskan: 2023-10-11 08:01:51
asal
1782 orang telah melayarinya

Bagaimana untuk menyelesaikan isu akses merentas domain dalam Java

Cara menyelesaikan masalah akses merentas domain dalam Java

Apabila membangunkan aplikasi web menggunakan Java, kami sering menghadapi masalah akses merentas domain. Akses merentas domain bermakna sumber yang diminta oleh pelanggan datang daripada domain yang berbeza, contohnya, sumber domain2.com diminta daripada halaman web www.domain1.com. Disebabkan oleh sekatan dasar asal yang sama, permintaan merentas domain sedemikian tidak dibenarkan. Artikel ini akan memperkenalkan beberapa kaedah untuk menyelesaikan masalah akses merentas domain dalam Java dan menyediakan contoh kod khusus.

Kaedah 1: Gunakan Penapis

Di Java, menggunakan Penapis ialah kaedah biasa untuk menyelesaikan masalah akses merentas domain. Kami boleh mengubah suai pengepala respons dengan menulis Penapis untuk membenarkan permintaan merentas domain tertentu.

Mula-mula, buat kelas yang melaksanakan antara muka javax.servlet.Filter, seperti CorsFilter. Dalam kaedah doFilter, tambah kod berikut:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse httpServletResponse = (HttpServletResponse) response;
    httpServletResponse.setHeader("Access-Control-Allow-Origin", "http://www.domain1.com"); // 允许跨域访问的域名
    httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); // 允许的请求方法
    httpServletResponse.setHeader("Access-Control-Max-Age", "3600"); // 预检请求的有效期
    httpServletResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with,Content-Type"); // 允许携带的请求头
    chain.doFilter(request, response);
}
Salin selepas log masuk

Seterusnya, tambah CorsFilter pada konfigurasi penapis dalam fail web.xml:

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>com.example.CorsFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Salin selepas log masuk

Dengan cara ini, penapis akan memintas semua permintaan dan menambah akses merentas domain dalam respons tajuk yang diperlukan medan.

Kaedah 2: Gunakan Rangka Kerja Spring

Jika anda menggunakan Rangka Kerja Spring, anda boleh menggunakan anotasi yang disediakan oleh rangka kerja untuk menyelesaikan isu akses merentas domain. Tambahkan anotasi @CrossOrigin pada kaedah pengawal SpringMVC untuk menentukan bahawa akses merentas domain dibenarkan.

@CrossOrigin(origins = "http://www.domain1.com", maxAge = 3600)
@RequestMapping("/example")
public String example() {
    // 控制器方法的逻辑
}
Salin selepas log masuk

Dengan cara ini, nama domain yang ditentukan boleh mengakses kaedah pengawal dan menambah medan yang diperlukan untuk akses merentas domain dalam pengepala respons.

Perlu diambil perhatian bahawa anotasi @CrossOrigin hanya boleh digunakan pada kaedah pengawal Jika anda mahu keseluruhan aplikasi menyokong akses merentas domain, anda boleh menambah konfigurasi berikut dalam fail konfigurasi Spring:

<mvc:cors>
    <mvc:mapping path="/**" />
    <mvc:allowed-origins>
        <mvc:origin>http://www.domain1.com</mvc:origin>
    </mvc:allowed-origins>
    <mvc:allowed-methods>
        <mvc:method>GET</mvc:method>
        <mvc:method>POST</mvc:method>
        <mvc:method>OPTIONS</mvc:method>
        <mvc:method>DELETE</mvc:method>
    </mvc:allowed-methods>
    <mvc:allowed-headers>
        <mvc:header>x-requested-with</mvc:header>
        <mvc:header>Content-Type</mvc:header>
    </mvc:allowed-headers>
</mvc:cors>
Salin selepas log masuk

Dengan cara ini. , keseluruhan aplikasi akan menyokong akses merentas domain dan menambah medan yang diperlukan untuk akses merentas domain dalam pengepala respons.

Ringkasan

Untuk menyelesaikan masalah akses merentas domain di Java, anda boleh menggunakan penapis penapis dan anotasi yang disediakan oleh rangka kerja Spring. Benarkan permintaan silang asal tertentu dengan menambahkan medan pengepala respons. Menggunakan kaedah ini, kami boleh menyelesaikan masalah akses merentas domain dengan mudah di Java dan memastikan keselamatan dan kestabilan aplikasi.

Di atas ialah kaedah dan contoh kod khusus tentang cara menyelesaikan masalah akses merentas domain di Java. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan isu akses merentas domain dalam Java. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan