diff --git a/electron/electron-menu.js b/electron/electron-menu.js index 0e2f9c8b6..fa2ee3936 100644 --- a/electron/electron-menu.js +++ b/electron/electron-menu.js @@ -58,17 +58,8 @@ const electronMenu = { }, async saveImageAs(url, params) { - let extension = ''; - if (utils.isLocalHost(url)) { - extension = utils.localAssetRestoreRealPath(url).split('.').pop().toLowerCase(); - } else { - const urlExtension = url.split('.').pop().split(/[#?]/)[0].toLowerCase(); - if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(urlExtension)) { - extension = urlExtension; - } - } - - if (!extension) { + let extension = url.split('.').pop().split(/[#?]/)[0].toLowerCase(); + if (!['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(extension)) { extension = 'png'; } @@ -89,8 +80,6 @@ const electronMenu = { try { if (electronMenu.isBlobOrDataUrl(url)) { await electronMenu.writeNativeImage(filePath, nativeImage.createFromDataURL(url)); - } else if (utils.isLocalHost(url)) { - await fs.promises.copyFile(utils.localAssetRestoreRealPath(url), filePath); } else { const writeStream = fs.createWriteStream(filePath) const readStream = request(url) diff --git a/electron/electron.js b/electron/electron.js index 942fe9b93..e432138d0 100644 --- a/electron/electron.js +++ b/electron/electron.js @@ -11,7 +11,6 @@ const { shell, globalShortcut, nativeTheme, - protocol, Tray, Menu, BrowserView, @@ -89,50 +88,6 @@ if (!fs.existsSync(cacheDir)) { fs.mkdirSync(cacheDir, { recursive: true }); } -// 在最开始就注册协议为特权协议 -protocol.registerSchemesAsPrivileged([ - { - scheme: 'local-asset', - privileges: { - standard: true, - secure: true, - supportFetchAPI: true, - corsEnabled: true - } - } -]) - -/** - * 创建协议 - */ -function createProtocol() { - protocol.handle('local-asset', async (request) => { - const url = utils.localAssetRestoreRealPath(request.url) - - if (url.includes('..')) { - return new Response('Access Denied', { status: 403 }) - } - - try { - if (!fs.existsSync(url)) { - return new Response('Not Found', { status: 404 }) - } - - const data = await fs.promises.readFile(url) - const mimeType = utils.getMimeType(url) - - return new Response(data, { - headers: { - 'Content-Type': mimeType - } - }) - } catch (error) { - console.error('Protocol handler error:', error) - return new Response('Internal Error', { status: 500 }) - } - }) -} - /** * 启动web服务 */ @@ -140,11 +95,11 @@ async function startWebServer() { if (serverUrl) { return Promise.resolve(); } - + return new Promise((resolve, reject) => { // 创建Express应用 const app = express(); - + // 使用express.static中间件提供静态文件服务 // Express内置了全面的MIME类型支持,无需手动配置 app.use(express.static(serverPublicDir, { @@ -164,18 +119,18 @@ async function startWebServer() { } } })); - + // 404处理中间件 app.use((req, res) => { res.status(404).send('File not found'); }); - + // 错误处理中间件 app.use((err, req, res, next) => { console.error('Server error:', err); res.status(500).send('Internal Server Error'); }); - + // 启动服务器 const server = app.listen(serverPort, 'localhost', () => { console.log(`Express static file server running at http://localhost:${serverPort}/`); @@ -183,7 +138,7 @@ async function startWebServer() { serverUrl = `http://localhost:${serverPort}/`; resolve(server); }); - + // 错误处理 server.on('error', (err) => { console.error('Server error:', err); @@ -373,7 +328,7 @@ function preCreateChildWindow() { const originalUA = browser.webContents.session.getUserAgent() || browser.webContents.getUserAgent() browser.webContents.setUserAgent(originalUA + " SubTaskWindow/" + process.platform + "/" + os.arch() + "/1.0"); - utils.loadUrl(browser, serverUrl, 'preload') + utils.loadUrl(browser, serverUrl, '/preload') preloadWindow = browser; } @@ -1010,8 +965,6 @@ if (!getTheLock) { } // SameSite utils.useCookie() - // 创建协议 - createProtocol() // 创建主窗口 createMainWindow() // 预创建子窗口 diff --git a/electron/utils.js b/electron/utils.js index d3570c98f..24b8cb409 100644 --- a/electron/utils.js +++ b/electron/utils.js @@ -639,30 +639,6 @@ const utils = { } }, - /** - * 本地资源路径还原 - * @param {string} url - * @returns {string} - */ - localAssetRestoreRealPath(url) { - if (!utils.isLocalHost(url)) { - return url - } - - let p0 = url.replace(/^local-asset:\/\//, '') - - const p1 = path.join(__dirname, '.', p0) - if (fs.existsSync(p1)) { - return p1 - } - - const p2 = path.join(__dirname, '..', p0) - if (fs.existsSync(p2)) { - return p2 - } - return url - }, - /** * 加载URL或文件 * @param browser