Skip to content
This repository was archived by the owner on Jun 24, 2025. It is now read-only.

Commit 6ca49e9

Browse files
authored
Merge pull request #1724 from yiranlus/develop
Allow setting CORS headers
2 parents 26ed302 + e6ccd88 commit 6ca49e9

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

config-sample.ini

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ keyPath=
2525
# expressjs shortcuts are supported: loopback(127.0.0.1/8, ::1/128), linklocal(169.254.0.0/16, fe80::/10), uniquelocal(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7)
2626
trustedReverseProxy=false
2727

28+
# setting the CORS headers for cross-origin requests
29+
# corsAllowOrigin='*'
30+
# corsAllowMethods='GET,POST,PUT,DELETE,PATCH'
31+
# corsAllowHeaders='Content-Type,Authorization'
32+
2833

2934
[Session]
3035
# Use this setting to set a custom value for the "Max-Age" Attribute of the session cookie.

src/app.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import compression from "compression";
77
import { fileURLToPath } from "url";
88
import { dirname } from "path";
99
import sessionParser from "./routes/session_parser.js";
10+
import config from "./services/config.js";
1011
import utils from "./services/utils.js";
1112
import assets from "./routes/assets.js";
1213
import routes from "./routes/routes.js";
@@ -33,6 +34,17 @@ app.set("views", path.join(scriptDir, "views"));
3334
app.set("view engine", "ejs");
3435

3536
app.use((req, res, next) => {
37+
// set CORS header
38+
if (config["Network"]["corsAllowOrigin"]) {
39+
res.header("Access-Control-Allow-Origin", config["Network"]["corsAllowOrigin"]);
40+
}
41+
if (config["Network"]["corsAllowMethods"]) {
42+
res.header("Access-Control-Allow-Methods", config["Network"]["corsAllowMethods"]);
43+
}
44+
if (config["Network"]["corsAllowHeaders"]) {
45+
res.header("Access-Control-Allow-Headers", config["Network"]["corsAllowHeaders"]);
46+
}
47+
3648
res.locals.t = t;
3749
return next();
3850
});

src/services/config.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ export interface TriliumConfig {
2929
certPath: string;
3030
keyPath: string;
3131
trustedReverseProxy: boolean | string;
32+
corsAllowOrigin: string;
33+
corsAllowMethods: string;
34+
corsAllowHeaders: string;
3235
};
3336
Session: {
3437
cookieMaxAge: number;
@@ -79,7 +82,16 @@ const config: TriliumConfig = {
7982
process.env.TRILIUM_NETWORK_KEYPATH || iniConfig.Network.keyPath || "",
8083

8184
trustedReverseProxy:
82-
process.env.TRILIUM_NETWORK_TRUSTEDREVERSEPROXY || iniConfig.Network.trustedReverseProxy || false
85+
process.env.TRILIUM_NETWORK_TRUSTEDREVERSEPROXY || iniConfig.Network.trustedReverseProxy || false,
86+
87+
corsAllowOrigin:
88+
process.env.TRILIUM_NETWORK_CORS_ALLOW_ORIGIN || iniConfig.Network.corsAllowOrigin || "",
89+
90+
corsAllowMethods:
91+
process.env.TRILIUM_NETWORK_CORS_ALLOW_METHODS || iniConfig.Network.corsAllowMethods || "",
92+
93+
corsAllowHeaders:
94+
process.env.TRILIUM_NETWORK_CORS_ALLOW_HEADERS || iniConfig.Network.corsAllowHeaders || ""
8395
},
8496

8597
Session: {

0 commit comments

Comments
 (0)