fix: 修复HTTPS页面下载HTTP直链的Mixed Content问题
- downloadFile: 检测Mixed Content自动降级到后端代理下载 - getMediaUrl: 媒体预览同样处理Mixed Content - 当HTTPS页面遇到HTTP直链时,自动使用服务器代理 - 添加Toast提示用户正在使用代理下载 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -2541,6 +2541,6 @@
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="app.js?v=20251127001"></script>
|
||||
<script src="app.js?v=20251127002"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -983,9 +983,28 @@ handleDragLeave(e) {
|
||||
|
||||
downloadFile(file) {
|
||||
console.log("[DEBUG] 下载文件:", file);
|
||||
const url = file.httpDownloadUrl
|
||||
? file.httpDownloadUrl
|
||||
: `${this.apiBase}/api/files/download?path=${encodeURIComponent(this.currentPath === '/' ? `/${file.name}` : `${this.currentPath}/${file.name}`)}`;
|
||||
|
||||
// 构建后端代理下载URL
|
||||
const proxyUrl = `${this.apiBase}/api/files/download?path=${encodeURIComponent(this.currentPath === '/' ? `/${file.name}` : `${this.currentPath}/${file.name}`)}`;
|
||||
|
||||
let url = proxyUrl;
|
||||
|
||||
// 检查是否有HTTP直链可用
|
||||
if (file.httpDownloadUrl) {
|
||||
// 检测Mixed Content:HTTPS页面不能加载HTTP资源
|
||||
const isHttpsPage = window.location.protocol === 'https:';
|
||||
const isHttpLink = file.httpDownloadUrl.startsWith('http://');
|
||||
|
||||
if (isHttpsPage && isHttpLink) {
|
||||
// HTTPS页面 + HTTP直链 = Mixed Content,使用后端代理
|
||||
console.log("[DEBUG] 检测到Mixed Content,使用后端代理下载");
|
||||
this.showToast('info', '提示', '由于安全限制,正在通过服务器代理下载');
|
||||
url = proxyUrl;
|
||||
} else {
|
||||
// 可以使用直链
|
||||
url = file.httpDownloadUrl;
|
||||
}
|
||||
}
|
||||
|
||||
// 统一通过隐藏链接触发下载,避免弹出新窗口
|
||||
const link = document.createElement('a');
|
||||
@@ -1203,13 +1222,25 @@ handleDragLeave(e) {
|
||||
? `/${file.name}`
|
||||
: `${this.currentPath}/${file.name}`;
|
||||
|
||||
// SFTP存储且配置了HTTP下载URL,使用HTTP直接访问;否则使用API下载
|
||||
// 构建后端代理URL
|
||||
const proxyUrl = `${this.apiBase}/api/files/download?path=${encodeURIComponent(filePath)}`;
|
||||
|
||||
// SFTP存储且配置了HTTP下载URL
|
||||
if (file.httpDownloadUrl) {
|
||||
// 检测Mixed Content:HTTPS页面不能加载HTTP资源
|
||||
const isHttpsPage = window.location.protocol === 'https:';
|
||||
const isHttpLink = file.httpDownloadUrl.startsWith('http://');
|
||||
|
||||
if (isHttpsPage && isHttpLink) {
|
||||
// HTTPS页面 + HTTP直链 = Mixed Content,使用后端代理
|
||||
console.log("[DEBUG] 媒体预览检测到Mixed Content,使用后端代理");
|
||||
return proxyUrl;
|
||||
}
|
||||
return file.httpDownloadUrl;
|
||||
}
|
||||
|
||||
// 本地存储或未配置HTTP URL,使用API下载(同域 Cookie 验证)
|
||||
return `${this.apiBase}/api/files/download?path=${encodeURIComponent(filePath)}`;
|
||||
return proxyUrl;
|
||||
},
|
||||
|
||||
// 获取文件缩略图URL
|
||||
|
||||
Reference in New Issue
Block a user