springboot 如何解决跨域
时间: 2023-10-18 19:53:57 浏览: 96
springboot后端解决跨域问题
5星 · 资源好评率100%
在 Spring Boot 中解决跨域问题,你可以使用以下方法:
1. 使用 @CrossOrigin 注解:在你的 Controller 类或方法上添加 @CrossOrigin 注解,指定允许跨域的来源。例如:
```java
@RestController
public class MyController {
@CrossOrigin(origins = "http://example.com")
@GetMapping("/myEndpoint")
public String myEndpoint() {
// 处理请求
}
}
```
上面的例子表示只允许来自 http://example.com 的跨域请求访问 /myEndpoint 接口。
2. 配置 CorsFilter:你可以创建一个 CorsFilter 类,并在其中配置跨域设置。例如:
```java
@Component
public class CorsFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Access-Control-Allow-Origin", "http://example.com");
httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type");
chain.doFilter(request, response);
}
}
```
上面的例子表示只允许来自 http://example.com 的跨域请求,并且只允许使用 POST、GET 和 OPTIONS 方法。
3. 配置 WebMvcConfigurer:通过实现 WebMvcConfigurer 接口,你可以重写 addCorsMappings 方法来配置全局的跨域设置。例如:
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://example.com")
.allowedMethods("POST", "GET", "OPTIONS")
.allowedHeaders("Content-Type");
}
}
```
上面的例子表示允许所有路径的跨域请求,并且只允许来自 http://example.com 的请求,允许的方法和请求头与前面的例子相同。
这些方法中,你可以根据自己的需求选择其中一种来解决跨域问题。
阅读全文