Cross-Domain
Eine Ressource initiiert eine HTTP-Anforderung für Cross-Site, wenn eine von ihm angeforderte Ressource ein anderer Domänenname ist als die erste Ressource, die sie bereitstellt.
Beispielsweise führt eine Webanwendung mit Domänenname A (http://domainb.foo) eine bestimmte Bildressource (http://domainb.foo/image.jpg) der Site des Domain -Namens B (http://domainb.foo/image.jpg) durch ein Tag vor. Die Webanwendung mit Domänenname A führt dazu, dass der Browser eine Cross-Site-HTTP-Anforderung initiiert. In der heutigen Webentwicklung ist die Verwendung von HTTP-Anfragen im Cross-Site, um verschiedene Ressourcen (einschließlich CSS, Bilder, JavaScript-Skripte und andere Ressourcen) zu laden, zu einer gemeinsamen und beliebten Art und Weise.
Wie Sie wissen, beschränken Browser aus Sicherheitsgründen die in Skripts eingeleiteten Cross-Site-Anfragen. Um beispielsweise HTTP-Anfragen mithilfe von XMLHTTPREquest-Objekt zu initiieren, müssen Sie die gleichorientierte Richtlinie einhalten. Insbesondere kann und kann eine Webanwendung das XMLHTTPREquest -Objekt nur verwenden, um HTTP -Anforderungen an den von ihm geladenen Quelldomänennamen zu initiieren und keine Anforderungen an einen anderen Domänennamen zu initiieren. Um leistungsfähigere, reichhaltigere und sichere Webanwendungen zu entwickeln, sind Entwickler bestrebt, leistungsstärker und reicher zu werden, ohne die Sicherheit zu verlieren. Beispielsweise können Sie XMLHTTPREQUEST verwenden, um eine Cross-Site-HTTP-Anforderung zu initiieren. (Diese Beschreibung der Cross-Domäne ist ungenau. Cross-Domäne ist nicht, dass der Browser die Cross-Domain-Anfragen einschränkt, aber Cross-Domain-Anfragen können normal initiiert werden, aber das Ergebnis wird durch den Browser abgefangen. Das beste Beispiel ist das beste Prinzip des CSRF-Cross-Domain-Angriffs. Der Antrag wird auf den Back-End-Server gesendet, unabhängig davon, ob es sich um Cross-Domain-Anfragen handelt. HTTPS -Domänen wie Chrome und Firefox.
Mehr: https://developer.mozilla.org/zh-cn/docs/web/http/access_control_cors
Cros
CORS ist der vollständige Name Cross Origin Resource Sharing. Der Server muss nur relevante Antwort-Header-Informationen hinzufügen, damit der Client AJAX-Cross-Domain-Anforderungen ausstellen kann.
@Crossoriginin
1. Verwenden Sie direkt alle Anfragen auf dem Controller Cross-Domain. Origins = "*" bedeutet, dass alle Anfragen angefordert werden können.
@CrossOrigin(origins = "http://domain2.com", maxAge = 3600)@RestController@RequestMapping("/account")public class AccountController { @RequestMapping("/{id}") public Account retrieve(@PathVariable Long id) { // ... } @RequestMapping(method = RequestMethod.DELETE, path = "/{id}") public void remove (@PathVariable Long id) {// ...}} 2. Verwenden Sie es in der Methode
@CrossOrigin(maxAge = 3600)@RestController@RequestMapping("/account")public class AccountController { @CrossOrigin("http://domain2.com") @RequestMapping("/{id}") public Account retrieve(@PathVariable Long id) { // ... } @RequestMapping(method = RequestMethod.DELETE, path = "/{id}") public void remove (@PathVariable Long id) {// ...}}Eine andere Methode:
Der Hauptzweck von CorsFilter besteht darin, relevante Informationsheader hinzuzufügen, die auch mit Filter erreicht werden können.
@ConfigurationPublic Class BeanConfiguration {@Bean public corsfilter corsFilter () {endgültige urlBasedCorsConFigurationsource urlBasedCorsConFigurationsource = new urlBasedCorsConFigurationsource (); endgültige corsconfiguration corsConfiguration = new corsConfiguration (); corsConfiguration.setlowedCredentials (true); corsConfiguration.addallowedErigin ("*"); corsConfiguration.addallowedHeader ("*"); corsConfiguration.addallowedMethod ("*"); urlBasedCorsConfigurationsource.registerCorsConfiguration ("/**", corsConfiguration); Return New CorsFilter (urlBasedCorsConFigurationSource); }}Access-Control-Owlalow-Origin: Der Client-Domain-Name, der zugreifen kann, z. B. http://web.xxx.com. Wenn *, bedeutet dies, dass es aus jeder Domäne zugegriffen werden kann, dh keine Einschränkungen sind erforderlich.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.