Skip to content

Commit 745b6c0

Browse files
author
Loïc Mangeonjean
committed
feat(demo): serve assets/workers/iframes from another host
it improve security by blocking any communitation between components (except by postMessage)
1 parent c1f2681 commit 745b6c0

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

demo/src/setup.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@ import ExtensionHostWorker from 'vscode/workers/extensionHost.worker?worker'
2727
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js'
2828
import { TerminalBackend } from './features/terminal'
2929
import { openNewCodeEditor } from './features/editor'
30-
import { toWorkerConfig } from './tools/workers'
30+
import { toCrossOriginWorker, toWorkerConfig } from './tools/workers'
3131

3232
// Workers
3333
export type WorkerLoader = () => Worker
3434
const workerLoaders: Partial<Record<string, WorkerLoader>> = {
35-
editorWorkerService: () => new EditorWorker(),
36-
textMateWorker: () => new TextMateWorker(),
37-
outputLinkComputer: () => new OutputLinkComputerWorker()
35+
editorWorkerService: () => new (toCrossOriginWorker(EditorWorker))(),
36+
textMateWorker: () => new (toCrossOriginWorker(TextMateWorker))(),
37+
outputLinkComputer: () => new (toCrossOriginWorker(OutputLinkComputerWorker))()
3838
}
3939
window.MonacoEnvironment = {
4040
getWorker: function (moduleId, label) {

demo/vite.config.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { defineConfig } from 'vite'
22
import * as fs from 'fs'
33

4+
const cdnDomain = 'http://127.0.0.2:5173'
5+
46
export default defineConfig({
57
build: {
68
target: 'esnext'
@@ -14,6 +16,7 @@ export default defineConfig({
1416
server.middlewares.use((_req, res, next) => {
1517
res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp')
1618
res.setHeader('Cross-Origin-Opener-Policy', 'same-origin')
19+
res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin')
1720
next()
1821
})
1922
}
@@ -56,7 +59,7 @@ export default defineConfig({
5659
let code = fs.readFileSync(args.path, 'utf8')
5760
code = code.replace(
5861
/\bimport\.meta\.url\b/g,
59-
`new URL('/@fs${args.path}', window.location.origin)`
62+
`new URL('${cdnDomain}/@fs${args.path}', window.location.origin)`
6063
)
6164
return { contents: code }
6265
})
@@ -66,6 +69,8 @@ export default defineConfig({
6669
},
6770
server: {
6871
port: 5173,
72+
origin: cdnDomain,
73+
host: '0.0.0.0',
6974
fs: {
7075
allow: ['../'] // allow to load codicon.ttf from monaco-editor in the parent folder
7176
}

0 commit comments

Comments
 (0)