在Spring中,設(shè)置跨域的方法有以下幾種:
使用注解@CrossOrigin
:@CrossOrigin
注解可以直接添加在Controller類或方法上,指定允許跨域的原始域名。例如:@CrossOrigin(origins = "http://example.com")
。
使用Java配置類WebMvcConfigurer
:創(chuàng)建一個類實現(xiàn)WebMvcConfigurer
接口,并重寫addCorsMappings
方法,通過CorsRegistry
對象配置允許跨域的規(guī)則。例如:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://example.com")
.allowedMethods("GET", "POST")
.allowCredentials(true)
.maxAge(3600);
}
}
CorsFilter
:在Web.xml
文件中配置一個CorsFilter
過濾器并設(shè)置跨域規(guī)則。例如:<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.springframework.web.filter.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>http://example.com</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST</param-value>
</init-param>
<init-param>
<param-name>cors.allow.credentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.max.age</param-name>
<param-value>3600</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/api/*</url-pattern>
</filter-mapping>
以上方法可以根據(jù)實際情況選擇適合的方式來設(shè)置跨域。