mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 20:38:52 +00:00
67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
import { protocol, session } from 'electron';
|
|
import { join } from 'path';
|
|
|
|
protocol.registerSchemesAsPrivileged([
|
|
{
|
|
scheme: 'assets',
|
|
privileges: {
|
|
secure: false,
|
|
corsEnabled: true,
|
|
supportFetchAPI: true,
|
|
standard: true,
|
|
bypassCSP: true,
|
|
},
|
|
},
|
|
]);
|
|
|
|
function toAbsolutePath(url: string) {
|
|
let realpath = decodeURIComponent(url);
|
|
const webStaticDir = join(__dirname, '../../../resources/web-static');
|
|
if (url.startsWith('./')) {
|
|
// if is a file type, load the file in resources
|
|
if (url.split('/').at(-1)?.includes('.')) {
|
|
realpath = join(webStaticDir, decodeURIComponent(url));
|
|
} else {
|
|
// else, fallback to load the index.html instead
|
|
realpath = join(webStaticDir, 'index.html');
|
|
}
|
|
}
|
|
return realpath;
|
|
}
|
|
|
|
export function registerProtocol() {
|
|
protocol.interceptFileProtocol('file', (request, callback) => {
|
|
const url = request.url.replace(/^file:\/\//, '');
|
|
const realpath = toAbsolutePath(url);
|
|
callback(realpath);
|
|
return true;
|
|
});
|
|
|
|
protocol.registerFileProtocol('assets', (request, callback) => {
|
|
const url = request.url.replace(/^assets:\/\//, '');
|
|
const realpath = toAbsolutePath(url);
|
|
callback(realpath);
|
|
return true;
|
|
});
|
|
|
|
session.defaultSession.webRequest.onHeadersReceived(
|
|
(responseDetails, callback) => {
|
|
const { responseHeaders } = responseDetails;
|
|
if (responseHeaders) {
|
|
delete responseHeaders['access-control-allow-origin'];
|
|
delete responseHeaders['access-control-allow-methods'];
|
|
responseHeaders['Access-Control-Allow-Origin'] = ['*'];
|
|
responseHeaders['Access-Control-Allow-Methods'] = [
|
|
'GET',
|
|
'POST',
|
|
'PUT',
|
|
'DELETE',
|
|
'OPTIONS',
|
|
];
|
|
}
|
|
|
|
callback({ responseHeaders });
|
|
}
|
|
);
|
|
}
|