Skip to content

Commit 3378888

Browse files
authored
Merge pull request #132 from QuantGeekDev/feat/oauth
Feat/oauth
2 parents 61e3aba + ed04094 commit 3378888

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/transports/http/server.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,14 @@ export class HttpStreamTransport extends AbstractTransport {
5858
try {
5959
const url = new URL(req.url!, `http://${req.headers.host}`);
6060

61+
if (req.method === 'OPTIONS') {
62+
this.setCorsHeaders(res, true);
63+
res.writeHead(204).end();
64+
return;
65+
}
66+
67+
this.setCorsHeaders(res);
68+
6169
if (req.method === 'GET' && url.pathname === '/.well-known/oauth-protected-resource') {
6270
if (this._oauthMetadata) {
6371
this._oauthMetadata.serve(res);
@@ -194,6 +202,20 @@ export class HttpStreamTransport extends AbstractTransport {
194202
});
195203
}
196204

205+
private setCorsHeaders(res: ServerResponse, includeMaxAge: boolean = false): void {
206+
if (!this._config.cors) return;
207+
208+
const cors = this._config.cors;
209+
res.setHeader('Access-Control-Allow-Origin', cors.allowOrigin || '*');
210+
res.setHeader('Access-Control-Allow-Methods', cors.allowMethods || 'GET, POST, OPTIONS');
211+
res.setHeader('Access-Control-Allow-Headers', cors.allowHeaders || 'Content-Type, Authorization, Mcp-Session-Id');
212+
res.setHeader('Access-Control-Expose-Headers', cors.exposeHeaders || 'Content-Type, Authorization, Mcp-Session-Id');
213+
214+
if (includeMaxAge) {
215+
res.setHeader('Access-Control-Max-Age', cors.maxAge || '86400');
216+
}
217+
}
218+
197219
private sendError(res: ServerResponse, status: number, code: number, message: string): void {
198220
if (res.headersSent) return;
199221

0 commit comments

Comments
 (0)