Rumah > Java > javaTutorial > Bagaimana untuk menyelesaikan masalah Ajax silang domain dan kegagalan kuki untuk mendapatkan dan kalah dalam SpringBoot

Bagaimana untuk menyelesaikan masalah Ajax silang domain dan kegagalan kuki untuk mendapatkan dan kalah dalam SpringBoot

王林
Lepaskan: 2023-05-26 09:56:13
ke hadapan
1604 orang telah melayarinya

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

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

Apabila menguji secara setempat, kuki boleh ditambah dengan betul pada respons dan diperoleh dengan betul

Bagaimana untuk menyelesaikan masalah Ajax silang domain dan kegagalan kuki untuk mendapatkan dan kalah dalam SpringBoot

Bagaimana untuk menyelesaikan masalah Ajax silang domain dan kegagalan kuki untuk mendapatkan dan kalah dalam SpringBoot

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 membawa

xmlhttp.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();
Salin selepas log masuk

nilai

ialah request.getHeader("Origin" ), yang mewakili

protokol dan nama domain

gabungan halaman di mana sumber yang diminta pada masa ini terletak Bersama-sama ia bermaksud

Membenarkan sumber yang diminta semasa mengakses sumber belakang merentasi domain

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

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!

Label berkaitan:
sumber:yisu.com
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