Skip to content

Commit 236361c

Browse files
authored
feat(api-server): allow CORS requests (#48)
2 parents 1dd092f + 78b89b2 commit 236361c

File tree

2 files changed

+40
-21
lines changed

2 files changed

+40
-21
lines changed

packages/api-server/src/api-server.ts

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,11 @@ export class NanotronApiServer {
148148
this.httpServer.on('clientError', this.handleClientError_);
149149

150150
if (this.config_.healthRoute) {
151-
this._defineHealthRoute();
151+
this.defineHealthRoute_();
152+
}
153+
154+
if (this.config_.allowAllOrigin === true) {
155+
this.defineCorsRoute_();
152156
}
153157
}
154158

@@ -253,6 +257,10 @@ export class NanotronApiServer {
253257

254258
const connection = new NanotronClientRequest(url, nativeClientRequest, nativeServerResponse, routeOption);
255259

260+
if (this.config_.allowAllOrigin === true) {
261+
connection.serverResponse.headers['access-control-allow-origin'] = '*';
262+
}
263+
256264
if (routeOption === null) {
257265
connection.serverResponse.statusCode = HttpStatusCodes.Error_Client_404_Not_Found;
258266
connection.serverResponse.replyError();
@@ -284,7 +292,9 @@ export class NanotronApiServer {
284292
// TODO: handled open remained connections.
285293
}
286294

287-
protected _defineHealthRoute(): void {
295+
protected defineHealthRoute_(): void {
296+
this.logger_.logMethod?.('defineHealthRoute_');
297+
288298
this.defineRoute({
289299
method: 'GET',
290300
url: '/health',
@@ -297,4 +307,22 @@ export class NanotronApiServer {
297307
},
298308
});
299309
}
310+
311+
protected defineCorsRoute_(): void {
312+
this.logger_.logMethod?.('defineCorsRoute_');
313+
314+
this.defineRoute({
315+
method: 'OPTIONS',
316+
matchType: 'startsWith',
317+
url: '/',
318+
handler: function () {
319+
const res = this.serverResponse.raw_;
320+
res.statusCode = HttpStatusCodes.Success_204_No_Content;
321+
res.setHeader('access-control-allow-origin', '*');
322+
res.setHeader('access-control-allow-methods', '*');
323+
res.setHeader('access-control-allow-headers', '*');
324+
res.end();
325+
},
326+
});
327+
}
300328
}

yarn.lock

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2240,16 +2240,7 @@ __metadata:
22402240
languageName: node
22412241
linkType: hard
22422242

2243-
"@types/node@npm:*":
2244-
version: 22.8.6
2245-
resolution: "@types/node@npm:22.8.6"
2246-
dependencies:
2247-
undici-types: "npm:~6.19.8"
2248-
checksum: 10c0/d3a11f2549234a91a4c5d0ff35ab4bdcb7ba34db4d3f1d189be39b8bd41c19aac98d117150a95a9c5a9d45b1014135477ea240b2b8317c86ae3d3cf1c3b3f8f4
2249-
languageName: node
2250-
linkType: hard
2251-
2252-
"@types/node@npm:^22.9.0":
2243+
"@types/node@npm:*, @types/node@npm:^22.9.0":
22532244
version: 22.9.0
22542245
resolution: "@types/node@npm:22.9.0"
22552246
dependencies:
@@ -2943,9 +2934,9 @@ __metadata:
29432934
linkType: hard
29442935

29452936
"caniuse-lite@npm:^1.0.30001669":
2946-
version: 1.0.30001676
2947-
resolution: "caniuse-lite@npm:1.0.30001676"
2948-
checksum: 10c0/53d310d76b5282947c99638a65d7534ac28a80aae1920de085a616ec8ad603358fad67cebacfc0452b1efdea12cce24fd37a50a712d074986b4962110e87d82b
2937+
version: 1.0.30001678
2938+
resolution: "caniuse-lite@npm:1.0.30001678"
2939+
checksum: 10c0/3209cc0f0b9683514916bed676d8f7965cae7faccaccb90f97c11fbdee32cd3f2f3b9cfec388ef400476299c3dd496fb1f8734c31c6199c4799b42813391517f
29492940
languageName: node
29502941
linkType: hard
29512942

@@ -3299,13 +3290,13 @@ __metadata:
32993290
linkType: hard
33003291

33013292
"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
3302-
version: 7.0.3
3303-
resolution: "cross-spawn@npm:7.0.3"
3293+
version: 7.0.4
3294+
resolution: "cross-spawn@npm:7.0.4"
33043295
dependencies:
33053296
path-key: "npm:^3.1.0"
33063297
shebang-command: "npm:^2.0.0"
33073298
which: "npm:^2.0.1"
3308-
checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750
3299+
checksum: 10c0/04f6c70dcbdd156f53073f13730f71160dabb91c8dfbdb24a873f4580ad7ca4b73c062ddfaaa2ba46d0dac433856d0cc0a07ff7173cd5404fefde952e87c9dbf
33093300
languageName: node
33103301
linkType: hard
33113302

@@ -3529,9 +3520,9 @@ __metadata:
35293520
linkType: hard
35303521

35313522
"electron-to-chromium@npm:^1.5.41":
3532-
version: 1.5.50
3533-
resolution: "electron-to-chromium@npm:1.5.50"
3534-
checksum: 10c0/8b77b18ae833bfe2173e346ac33b8d66b5b5acf0cf5de65df9799f4d482334c938aa0950e4d01391d5fab8994f46c0e9059f4517843e7b8d861f9b0c49eb4c5d
3523+
version: 1.5.52
3524+
resolution: "electron-to-chromium@npm:1.5.52"
3525+
checksum: 10c0/1c85a5710ad21758780b8e067d5f63ed00416dbe93f64bd8937dbfb4ed98cf93d80c471a30daed439cb91a00ff4942ea2628e00a69d56639cc7070e9e8ab2694
35353526
languageName: node
35363527
linkType: hard
35373528

0 commit comments

Comments
 (0)