Java 后台跳过跨域问题
时间: 2023-08-27 18:06:45 浏览: 114
Java 后台跳过跨域问题的方法有多种,以下列举几种常用的方法:
1. 使用 CorsFilter 过滤器
在 Spring Boot 中,可以通过添加 CorsFilter 过滤器来解决跨域问题。在代码中添加如下过滤器即可:
```java
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return bean;
}
```
2. 使用 @CrossOrigin 注解
使用 @CrossOrigin 注解可以在控制器方法上添加跨域配置。例如:
```java
@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "*", allowedHeaders = "*", methods = {RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE})
public class ApiController {
// 控制器方法
}
```
3. 使用 JSONP
JSONP 是一种跨域数据传输的解决方案,需要前端和后台协同实现。在后台中,需要将数据封装成一个 JSONP 回调函数的形式返回给前端,例如:
```java
@RequestMapping("/api")
@ResponseBody
public String api(HttpServletRequest request) {
String callback = request.getParameter("callback");
String data = "{\"name\": \"张三\", \"age\": 20}";
return callback + "(" + data + ")";
}
```
前端在请求数据时,需要将回调函数的名称作为参数传递给后台,例如:
```javascript
$.ajax({
url: "http://localhost:8080/api?callback=handleData",
dataType: "jsonp",
success: function(data) {
console.log(data);
}
});
```
以上是几种常用的跨域解决方案,可以根据实际情况选择合适的方法。
阅读全文