fix: add decodeURIComponent

This commit is contained in:
xion 2025-03-12 00:49:53 +08:00
parent 07cfa1dded
commit 3d6ce4cbf4
2 changed files with 10 additions and 4 deletions

View File

@ -223,14 +223,18 @@ export class UserApp {
}); });
} }
await redis.set(key, JSON.stringify(value)); await redis.set(key, JSON.stringify(value));
await redis.set('user:app:exist:' + app + ':' + user, 'index.html||etag||false', 'EX', 60 * 60 * 24 * 7); // 7天
const files = value.data.files; const files = value.data.files;
const data = {}; const data = {};
let indexHtml = path.join(fileStore, user, app, 'index.html') + '||etag||false';
// 将文件名和路径添加到 `data` 对象中 // 将文件名和路径添加到 `data` 对象中
files.forEach((file) => { files.forEach((file) => {
data[file.name] = file.path; data[file.name] = file.path;
if (file.name === 'index.html') {
indexHtml = file.path;
}
}); });
await redis.set('user:app:exist:' + app + ':' + user, indexHtml, 'EX', 60 * 60 * 24 * 7); // 7天
await redis.hset('user:app:set:' + app + ':' + user, data); await redis.hset('user:app:set:' + app + ':' + user, data);
this.setLoaded('running', 'loaded'); this.setLoaded('running', 'loaded');
}; };

View File

@ -200,13 +200,14 @@ export const handleRequest = async (req: http.IncomingMessage, res: http.ServerR
} else { } else {
appFileUrl = (url + '').replace(`/${user}/${app}/`, ''); appFileUrl = (url + '').replace(`/${user}/${app}/`, '');
} }
appFileUrl = decodeURIComponent(appFileUrl); // Decode URL components
const appFile = await userApp.getFile(appFileUrl); const appFile = await userApp.getFile(appFileUrl);
if (isExist.proxy) { if (isExist.proxy) {
let proxyUrl = appFile || isExist.indexFilePath; let proxyUrl = appFile || isExist.indexFilePath;
if (!proxyUrl.startsWith('http')) { if (!proxyUrl.startsWith('http')) {
return createNotFoundPage('Invalid proxy url'); return createNotFoundPage('Invalid proxy url');
} }
console.log('proxyUrl', appFileUrl, proxyUrl);
let protocol = proxyUrl.startsWith('https') ? https : http; let protocol = proxyUrl.startsWith('https') ? https : http;
// 代理 // 代理
const proxyReq = protocol.request(proxyUrl, (proxyRes) => { const proxyReq = protocol.request(proxyUrl, (proxyRes) => {
@ -231,7 +232,8 @@ export const handleRequest = async (req: http.IncomingMessage, res: http.ServerR
// userApp.clearCacheData() // userApp.clearCacheData()
return; return;
} }
console.log('appFile', appFile, appFileUrl); console.log('appFile', appFile, appFileUrl, isExist);
// console.log('isExist', isExist);
if (!appFile) { if (!appFile) {
const [indexFilePath, etag] = indexFile.split('||'); const [indexFilePath, etag] = indexFile.split('||');
const contentType = getContentType(indexFilePath); const contentType = getContentType(indexFilePath);