Rumah >Java >javaTutorial >Bagaimana untuk menyelesaikan masalah Ajax silang domain dan kegagalan kuki untuk mendapatkan dan kalah dalam SpringBoot
Apabila menulis halaman pendaftaran log masuk projek saya, kerana fungsi pendaftaran dan penukaran kata laluan saya menggunakan pengesahan e-mel, apabila menghantar kod pengesahan, bahagian belakang akan menambah kuki pada data respons
Cookie cookie = new Cookie(toEmail.split("@")[0],verCode); cookie.setMaxAge(30*60); response.addCookie(cookie);
dan kemudian Apabila anda klik untuk mendaftar atau menukar kata laluan anda, bahagian belakang akan memperoleh kuki daripada permintaan untuk mendapatkan maklumat e-mel dan kod pengesahan
Cookie[] cookies = request.getCookies();
Apabila menguji secara setempat, kuki boleh ditambah dengan betul pada respons dan diperoleh dengan betul
Tetapi apabila saya membungkus projek ke awan dan kemudian melakukan akses ajax, masalah telah berlaku.
Terdapat set-Cookie dengan jelas dalam pengepala respons, tetapi Cookie tidak boleh ditemui dalam pengepala permintaan kedua
Pelayan gagal mendapatkan kuki dan melaporkan ralat Fungsi menggunakan kuki untuk mendaftar dan menukar kata laluan tidak sah Selepas mencari dokumen, saya mendapati ralat itu berasal daripada masalah kehilangan kuki merentas domain springboot dan ajax Memandangkan saya baru menggunakan bahagian belakang,
Saya hanya menyiarkan penyelesaian saya di sini
1. Permintaan ajax perlu membawaxmlhttp.withCredentials = true; Control-Allow-Origin" kawalan akses sumber dibenarkan, maklumat pengepala permintaan http, tetapkan perkongsian sumber yang dibenarkan (cross-domain) ) Sumber var xmlhttp = new XMLHttpRequest();
xmlhttp.withCredentials = true;
xmlhttp.open("GET", readyUrl, true);
xmlhttp.send();
ialah request.getHeader("Origin" ), yang mewakili
protokol dan nama domaingabungan halaman di mana sumber yang diminta pada masa ini terletak Bersama-sama ia bermaksud
Membenarkan sumber yang diminta semasa mengakses sumber belakang merentasi domainSelepas menetapkan ketiga-tiga ini, saya boleh mendapatkan kuki semula
2022 -12-09 Kemas Kini:Menemui yang lebih ringkas dan kaedah yang mudah untuk menambah penapis permintaan merentas domain
Menggunakan kaedah StringUtils.isEmpty bagi pakej pergantungan kumpulan data Druid , jika ralat dilaporkan, tulis sahaja pengganti sendiri
package com.crisp.myblog.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class corsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") //是否发送Cookie .allowCredentials(true) //放行哪些原始域 .allowedOriginPatterns("这里填你前端代码所在的域名:端口") .allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"}) .allowedHeaders("*") .exposedHeaders("*"); } }
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah Ajax silang domain dan kegagalan kuki untuk mendapatkan dan kalah dalam SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!