[File] 로컬에서 -> api서버에서 다운로드 가능하게 추가
This commit is contained in:
@@ -200,7 +200,7 @@ public class FileController {
|
|||||||
return ResponseEntity.notFound().build();
|
return ResponseEntity.notFound().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fileService.isRedirectMode()) {
|
if (fileService.isRedirectMode() || fileService.isLocalTestRequest(request)) {
|
||||||
return ResponseEntity.status(HttpStatus.FOUND)
|
return ResponseEntity.status(HttpStatus.FOUND)
|
||||||
.location(URI.create(fileService.buildPublicViewUrl(target.getSavePath())))
|
.location(URI.create(fileService.buildPublicViewUrl(target.getSavePath())))
|
||||||
.build();
|
.build();
|
||||||
@@ -240,7 +240,7 @@ public class FileController {
|
|||||||
return ResponseEntity.notFound().build();
|
return ResponseEntity.notFound().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fileService.isRedirectMode()) {
|
if (fileService.isRedirectMode() || fileService.isLocalTestRequest(request)) {
|
||||||
return ResponseEntity.status(HttpStatus.FOUND)
|
return ResponseEntity.status(HttpStatus.FOUND)
|
||||||
.location(URI.create(fileService.buildPublicDownloadUrl(target.getSavePath())))
|
.location(URI.create(fileService.buildPublicDownloadUrl(target.getSavePath())))
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.alist.api.common.modules.file.service;
|
|||||||
import com.alist.api.common.modules.file.dto.*;
|
import com.alist.api.common.modules.file.dto.*;
|
||||||
import com.alist.api.common.modules.file.mapper.FileMapper;
|
import com.alist.api.common.modules.file.mapper.FileMapper;
|
||||||
import com.alist.api.config.jwt.JwtTokenProvider;
|
import com.alist.api.config.jwt.JwtTokenProvider;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.data.redis.core.HashOperations;
|
import org.springframework.data.redis.core.HashOperations;
|
||||||
@@ -695,4 +696,23 @@ public class FileService {
|
|||||||
|
|
||||||
return baseUrl + prefix + savePath;
|
return baseUrl + prefix + savePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isLocalTestRequest(HttpServletRequest request) {
|
||||||
|
return containsLocalhost(request.getHeader("Referer"))
|
||||||
|
|| containsLocalhost(request.getHeader("Origin"))
|
||||||
|
|| containsLocalhost(request.getHeader("Host"))
|
||||||
|
|| containsLocalhost(request.getHeader("X-Forwarded-Host"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean containsLocalhost(String value) {
|
||||||
|
if (value == null || value.isBlank()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
String lower = value.toLowerCase();
|
||||||
|
return lower.contains("localhost")
|
||||||
|
|| lower.contains("127.0.0.1")
|
||||||
|
|| lower.contains("[::1]")
|
||||||
|
|| lower.contains("::1");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user