@@ -12,6 +12,26 @@ const ALLOWED_ORIGIN_PATTERNS = [
1212 ] ) ,
1313] ;
1414
15+ const ALLOWED_HEADERS = [
16+ 'Content-Type' ,
17+ 'Authorization' ,
18+ 'X-WorldMonitor-Key' ,
19+ 'X-Api-Key' ,
20+ 'X-Widget-Key' ,
21+ 'X-Pro-Key' ,
22+ 'X-WorldMonitor-Desktop-Timestamp' ,
23+ 'X-WorldMonitor-Desktop-Signature' ,
24+ 'Mcp-Session-Id' ,
25+ 'MCP-Protocol-Version' ,
26+ 'Last-Event-ID' ,
27+ ] . join ( ', ' ) ;
28+
29+ const EXPOSED_HEADERS = [
30+ 'Mcp-Session-Id' ,
31+ 'WWW-Authenticate' ,
32+ 'Retry-After' ,
33+ ] . join ( ', ' ) ;
34+
1535function isAllowedOrigin ( origin ) {
1636 return Boolean ( origin ) && ALLOWED_ORIGIN_PATTERNS . some ( ( pattern ) => pattern . test ( origin ) ) ;
1737}
@@ -23,7 +43,8 @@ export function getCorsHeaders(req, methods = 'GET, OPTIONS') {
2343 'Access-Control-Allow-Origin' : allowOrigin ,
2444 'Access-Control-Allow-Credentials' : 'true' ,
2545 'Access-Control-Allow-Methods' : methods ,
26- 'Access-Control-Allow-Headers' : 'Content-Type, Authorization, X-WorldMonitor-Key, X-Api-Key, X-Widget-Key, X-Pro-Key, X-WorldMonitor-Desktop-Timestamp, X-WorldMonitor-Desktop-Signature' ,
46+ 'Access-Control-Allow-Headers' : ALLOWED_HEADERS ,
47+ 'Access-Control-Expose-Headers' : EXPOSED_HEADERS ,
2748 'Access-Control-Max-Age' : '3600' ,
2849 'Vary' : 'Origin' ,
2950 } ;
@@ -41,7 +62,8 @@ export function getPublicCorsHeaders(methods = 'GET, OPTIONS') {
4162 return {
4263 'Access-Control-Allow-Origin' : '*' ,
4364 'Access-Control-Allow-Methods' : methods ,
44- 'Access-Control-Allow-Headers' : 'Content-Type, Authorization, X-WorldMonitor-Key, X-Api-Key, X-Widget-Key, X-Pro-Key, X-WorldMonitor-Desktop-Timestamp, X-WorldMonitor-Desktop-Signature' ,
65+ 'Access-Control-Allow-Headers' : ALLOWED_HEADERS ,
66+ 'Access-Control-Expose-Headers' : EXPOSED_HEADERS ,
4567 'Access-Control-Max-Age' : '3600' ,
4668 } ;
4769}
0 commit comments