Wie gehe ich mit domänenübergreifenden Anforderungen bei der Entwicklung von Java-Backend-Funktionen um?
Im Entwicklungsmodus, in dem Front-End und Back-End getrennt sind, kommt es sehr häufig vor, dass das Front-End Anfragen an die Back-End-API-Schnittstelle sendet, um Daten über JavaScript abzurufen. Aufgrund der Same-Origin-Policy des Browsers gibt es jedoch Einschränkungen bei domänenübergreifenden Anfragen. Eine domänenübergreifende Anforderung bedeutet, dass die Front-End-Seite über AJAX und andere Methoden Server mit unterschiedlichen Domänennamen, unterschiedlichen Ports oder unterschiedlichen Protokollen anfordert. In diesem Artikel wird anhand von Codebeispielen eine gängige Methode zur Verarbeitung domänenübergreifender Anforderungen bei der Entwicklung von Java-Back-End-Funktionen vorgestellt.
Der übliche Weg, domänenübergreifende Probleme zu lösen, besteht darin, entsprechende Konfigurationen im Backend vorzunehmen. Im Folgenden wird das Spring Boot-Framework als Beispiel verwendet, um den Umgang mit domänenübergreifenden Anforderungen vorzustellen.
CrossOrigin-Annotation zur Backend-Controller-Methode hinzufügen Diese Annotation wird zum Konfigurieren des Domänennamens, der Anforderungsmethode und anderer verwandter Parameter verwendet, die domänenübergreifend ermöglichen. Das Folgende ist ein Beispiel:
@RestController @RequestMapping("/api") @CrossOrigin(origins = "http://frontend.com", methods = {RequestMethod.GET, RequestMethod.POST}) public class MyController { // Controller方法... }
Im obigen Code gibt die Annotation @CrossOrigin an, dass der Domänenname http://frontend.com GET- und POST-Anfragen initiieren darf. Sie können diese Parameter entsprechend Ihren Anforderungen ändern.
Die globale domänenübergreifende Anforderungsverarbeitung kann über Konfigurationsdateien erreicht werden. Fügen Sie der Spring Boot-Projektkonfigurationsdatei (z. B. application.properties) die folgende Konfiguration hinzu:
spring.webmvc.cors.allowed-origins=*
Der obige Code gibt an, dass alle Domänennamen domänenübergreifende Anforderungen initiieren dürfen. Sie können auch einen bestimmten Domänennamen angeben, z. B.:
spring.webmvc.cors.allowed-origins=http://frontend1.com,http://frontend2.com
Zusätzlich zu den beiden oben genannten Methoden können Sie den Filter auch zur Bearbeitung domänenübergreifender Anfragen verwenden. Erstellen Sie eine Klasse, die die Filterschnittstelle implementiert, und fügen Sie dann domänenübergreifende Verarbeitungslogik in der doFilter-Methode hinzu. Das Folgende ist ein Beispiel:
@Component public class CorsFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With"); chain.doFilter(req, res); } }
Im obigen Code wird die Konfiguration zum Zulassen domänenübergreifender Anforderungen durch Festlegen des Antwortheaders implementiert.
Zusammenfassend lässt sich sagen, dass es bei der Entwicklung von Java-Backend-Funktionen viele Möglichkeiten gibt, domänenübergreifende Anforderungen zu verarbeiten. Wählen Sie einfach die geeignete Methode entsprechend den tatsächlichen Anforderungen. Das Obige enthält Beispielcode für die Verwendung von CrossOrigin-Anmerkungen, die Konfiguration der globalen domänenübergreifenden Konfiguration von Spring Boot und die Verwendung von Filter zur Verarbeitung domänenübergreifender Anforderungen. Ich hoffe, dass es Ihnen bei domänenübergreifenden Problemen während der Entwicklung hilft.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit domänenübergreifenden Anforderungen bei der Entwicklung von Java-Backend-Funktionen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!