Spring boot 簡單的圖片反向代理
2 min readMay 15, 2020
反向代理的好處
- 保護 Server 跟 Resource
- 可在代理上作快取, Loadbalance, 優化資源存取速度
- 節約 IP 的使用, 或做一些 URL 的管理, 短網址, 短連結…
Sample Code
@GetMapping(value = "/image", produces = MediaType.IMAGE_JPEG_VALUE)
public ResponseEntity<byte[]> image() throws Exception {
URL url = new URL("圖片 URL");
URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) ...");
BufferedImage image = ImageIO.read(connection.getInputStream());
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", outputStream);
HttpHeaders header = new HttpHeaders();
header.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=img.jpg");
return ResponseEntity.ok()
.headers(header)
.body(outputStream.toByteArray());
}