Wenn ich die Login-Registrierungsseite meines Projekts schreibe, fügt das Backend beim Senden des Bestätigungscodes ein Cookie zu den Antwortdaten hinzu, da meine Registrierungs- und Passwortänderungsfunktionen eine E-Mail-Verifizierung verwenden.
Cookie cookie = new Cookie(toEmail.split("@")[0],verCode); cookie.setMaxAge(30*60); response.addCookie(cookie);
Klicken Sie dann, um sich zu registrieren oder das Passwort zu ändern. Beim Testen , das Backend erhält das Cookie aus der Anfrage, um die E-Mail- und Bestätigungscode-Informationen zu erhalten Das Projekt Nach dem Wechsel in die Cloud ist beim Ausführen des Ajax-Zugriffs ein Problem aufgetreten! Cookies und meldete einen Fehler. Nach der Suche nach Dokumenten wurde festgestellt, dass der Fehler auf das domänenübergreifende Cookie-Verlustproblem von Springboot und Ajax zurückzuführen ist , ich werde hier nur posten
1. Die Ajax-Anfrage muss
xmlhttp.withCredentials = true;
Cookie[] cookies = request.getCookies();
var xmlhttp = new XMLHttpRequest(); xmlhttp.withCredentials = true; xmlhttp.open("GET", readyUrl, true); xmlhttp.send();
ist „Access-Control-Allow-Origin“, die für die Zugriffskontrolle zulässige Quelle, http-Anfrage-Header-Informationen, legen Sie die Quelle fest
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("*"); } }
ermöglicht, ist request.getHeader("Origin"), der
den Protokoll- und Domänennamen der Seitedarstellt, auf der sich die aktuell angeforderte Ressource befindet repräsentieren
der aktuell angeforderten Ressource den domänenübergreifenden Zugriff auf Back-End-Ressourcen zu ermöglichenNachdem diese drei Teile eingerichtet wurden, konnte ich das Cookie erneut erhalten
2022-12-09 Update:Ich habe noch mehr gefunden Prägnante und praktische Methode zum Hinzufügen eines domänenübergreifenden AnforderungsfiltersVerwenden Sie StringUtils des Druid-Datenpool-Abhängigkeitspakets isEmpty. Wenn ein Fehler gemeldet wird, schreiben Sie einfach selbst einen Ersatz
response.setHeader("Access-Control-Allow-Origin",request.getHeader("Origin"));
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem des domänenübergreifenden Ajax- und Cookie-Fehlers beim Abrufen und Verlieren in SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!