Heim > Java > javaLernprogramm > So lösen Sie das Problem des domänenübergreifenden Ajax- und Cookie-Fehlers beim Abrufen und Verlieren in SpringBoot

So lösen Sie das Problem des domänenübergreifenden Ajax- und Cookie-Fehlers beim Abrufen und Verlieren in SpringBoot

王林
Freigeben: 2023-05-26 09:56:13
nach vorne
1604 Leute haben es durchsucht

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);
Nach dem Login kopieren

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;

So lösen Sie das Problem des domänenübergreifenden Ajax- und Cookie-Fehlers beim Abrufen und Verlieren in SpringBoot

Cookie[] cookies = request.getCookies();
Nach dem Login kopieren

2 Fehler)

var xmlhttp = new XMLHttpRequest();
xmlhttp.withCredentials = true;
xmlhttp.open("GET", readyUrl, true);
xmlhttp.send();
Nach dem Login kopieren
So lösen Sie das Problem des domänenübergreifenden Ajax- und Cookie-Fehlers beim Abrufen und Verlieren in SpringBoot3. Geben Sie die Antwort in der API im Controller ein, legen Sie den Antwortheader fest, der

-Schlüssel

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("*");
    }
}
Nach dem Login kopieren

Wert, der die gemeinsame Nutzung von Ressourcen (domänenübergreifend)

ermöglicht, ist request.getHeader("Origin"), der

den Protokoll- und Domänennamen

der Seite

darstellt, 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öglichen

Nachdem 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"));
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage