(1)我们可以直接在相应的请求方法上添加 @CrossOrigin 注解,那么该方法则支持跨域。
@RestController
public class WebAPIController {
@Autowired
DeviceDataManager deviceDataManager;
@GetMapping("/getDeviceDatas")
@CrossOrigin
public List<DeviceData> getDeviceDatas() {
return deviceDataManager.getDatas();
}
}
(2)我们也可以在控制器上添加 @CrossOrigin 注解,那么该控制器下的所有方法都支持跨域。
@RestController
@CrossOrigin
public class WebAPIController {
@Autowired
DeviceDataManager deviceDataManager;
@GetMapping("/getDeviceDatas")
public List<DeviceData> getDeviceDatas() {
return deviceDataManager.getDatas();
}
}
(3)@CrossOrigin 注解还支持更加丰富的参数配置:
- value:表示支持的域。这里表示来自 http://localhost:8081 域的请求是支持跨域的。默认为 *,表示所有域都可以。
- maxAge:表示探测请求的有效期(先进性判断是否有效)。探测请求不用每次都发送,可以配置一个有效期,有效期过了之后才会发送探测请求。默认为 1800 秒,即 30 分钟。
- allowedHeaders:表示允许的请求头。默认为 *,表示该域中的所有的请求都被允许。
@RestController
public class WebAPIController {
@Autowired
DeviceDataManager deviceDataManager;
@GetMapping("/getDeviceDatas")
@CrossOrigin(value = "http://localhost:8081", maxAge = 1800, allowedHeaders ="*")
public List<DeviceData> getDeviceDatas() {
return deviceDataManager.getDatas();
}
}
var uploadUrl = 'http://192.168.1.137:8086/photo/savePhoto' // 上传图片接口地址
// 请求后台接口
$.ajax({
url: uploadUrl,
type: "POST",
data: formData,
processData: false, // jQuery不要去处理发送的数据
contentType: false, // jQuery不要去设置Content-Type请求头
success: function(data) {
console.log(data)
}
})