var xhr = new XMLHttpRequest() xhr.open('GET', 'http://localhost:8080/user') // 替换请求的方法和地址 xhr.send() xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { console.log(xhr.responseText) } }. Wenn die folgende Ausgabe angezeigt wird, bedeutet dies, dass tatsächlich domänenübergreifend vorhanden ist
1. SpringBoot konfiguriert CORS, um domänenübergreifende Probleme zu lösen
Das heißt, alle unsere Antwortheaderkonfigurationen ermöglichen domänenübergreifenden Zugriff, und CORS ist zu einer domänenübergreifenden Mainstream-Lösung geworden. Erstellen Sie eine neue Konfigurationsdatei im Projekt.@Configuration
hinzu, um die Schnittstelle WebMvcConfigurer
zu implementieren. @Configuration
注解实现WebMvcConfigurer
接口
重写addCorsMappings
方法并设置允许跨域的代码
具体代码如下:
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 WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 所有接口 .allowCredentials(true) // 是否发送 Cookie .allowedOriginPatterns("*") // 支持域 .allowedMethods("GET", "POST", "PUT", "DELETE") // 支持方法 .allowedHeaders("*") .exposedHeaders("*"); } }
这种方式和上面的方式类似,也是通过Java Config
的方式配置跨域访问,具体代码如下:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class MyCorsFilter { @Bean public CorsFilter corsFilter() { // 1.创建 CORS 配置对象 CorsConfiguration config = new CorsConfiguration(); // 支持域 config.addAllowedOriginPattern("*"); // 是否发送 Cookie config.setAllowCredentials(true); // 支持请求方式 config.addAllowedMethod("*"); // 允许的原始请求头部信息 config.addAllowedHeader("*"); // 暴露的头部信息 config.addExposedHeader("*"); // 2.添加地址映射 UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource(); corsConfigurationSource.registerCorsConfiguration("/**", config); // 3.返回 CorsFilter 对象 return new CorsFilter(corsConfigurationSource); } }
可以在我们的控制器类或控制器方法上添加,添加在类上表示里面所有方法都可跨域,添加在方法上表示指定方法可以跨域,具体代码如下:
import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/user") @CrossOrigin public class UserController { @GetMapping public String getAll() { return "成功"; } }
如果我们项目有用 nginx
做反向代理服务器时,也可以在nginx
中配置CORS
Schreiben Sie addCorsMappings-Methode und legen Sie den Code fest, der domänenübergreifend ermöglicht
server { ... location / { #允许 所有头部 所有域 所有方法 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Headers' '*'; add_header 'Access-Control-Allow-Methods' '*'; #OPTIONS 直接返回204 if ($request_method = 'OPTIONS') { return 204; } } ... }2. SpringBoot löst domänenübergreifend über CorsFilter 🎜🎜Diese Methode ähnelt der oben genannten Methode. und verwendet auch
Java Config
, um den domänenübergreifenden Zugriff zu konfigurieren. Der spezifische Code lautet wie folgt:🎜map $http_origin $corsHost { default 0; "~https://aa.cn" https://aa.cn; "~https://bb.cn" https://bb.cn; "~https://cc.cn" https://cc.cn; } server { ... location / { #允许 所有头部 所有$corsHost域 所有方法 add_header 'Access-Control-Allow-Origin' $corsHost; add_header 'Access-Control-Allow-Headers' '*'; add_header 'Access-Control-Allow-Methods' '*'; #OPTIONS 直接返回204 if ($request_method = 'OPTIONS') { return 204; } } ... }🎜3 SpringBoot löst domänenübergreifend durch Anmerkungen🎜🎜Kann zu unserer Controller-Klasse oder Controller-Methode hinzugefügt werden , und zur Klasse hinzugefügt, um alle Methoden innerhalb der Domäne darzustellen. Das Hinzufügen zur Methode bedeutet, dass die angegebene Methode wie folgt sein kann: 🎜rrreee🎜 4. Konfigurieren Sie CORS über Nginx um domänenübergreifende Probleme zu lösen 🎜🎜Wenn unser Projekt nützlich ist, kann
nginx
als Reverse-Proxy verwendet werden. Bei Verwendung des Servers können Sie auch CORS
in konfigurieren nginx
zur Lösung domänenübergreifender Probleme: 🎜🎜1. Alle Domänennamen zulassen🎜rrreeeDas obige ist der detaillierte Inhalt vonWelche domänenübergreifenden Lösungen gibt es für SpringBoot-Projekte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!