@@ -31,7 +31,7 @@ function warnOrBlockRequest(
3131 return true
3232}
3333
34- function isInternalDevEndpoint ( req : IncomingMessage ) : boolean {
34+ function isInternalEndpoint ( req : IncomingMessage ) : boolean {
3535 if ( ! req . url ) return false
3636
3737 try {
@@ -50,7 +50,7 @@ function isInternalDevEndpoint(req: IncomingMessage): boolean {
5050 }
5151}
5252
53- export const blockCrossSite = (
53+ export const blockCrossSiteDEV = (
5454 req : IncomingMessage ,
5555 res : ServerResponse | Duplex ,
5656 allowedDevOrigins : string [ ] | undefined ,
@@ -70,9 +70,10 @@ export const blockCrossSite = (
7070 }
7171
7272 // only process internal URLs/middleware
73- if ( ! isInternalDevEndpoint ( req ) ) {
73+ if ( ! isInternalEndpoint ( req ) ) {
7474 return false
7575 }
76+
7677 // block non-cors request from cross-site e.g. script tag on
7778 // different host
7879 if (
@@ -82,20 +83,20 @@ export const blockCrossSite = (
8283 return warnOrBlockRequest ( res , undefined , mode )
8384 }
8485
85- // ensure websocket requests from allowed origin
86+ // ensure websocket requests are only fulfilled from allowed origin
8687 const rawOrigin = req . headers [ 'origin' ]
87-
88- if ( rawOrigin && rawOrigin !== 'null' ) {
89- const parsedOrigin = parseUrl ( rawOrigin )
90-
91- if ( parsedOrigin ) {
92- const originLowerCase = parsedOrigin . hostname . toLowerCase ( )
93-
94- if ( ! isCsrfOriginAllowed ( originLowerCase , allowedOrigins ) ) {
95- return warnOrBlockRequest ( res , originLowerCase , mode )
96- }
97- }
98- }
99-
100- return false
88+ const parsedOrigin =
89+ rawOrigin && rawOrigin !== 'null' ? parseUrl ( rawOrigin ) : rawOrigin
90+
91+ const originLowerCase =
92+ parsedOrigin === undefined || typeof parsedOrigin === 'string'
93+ ? parsedOrigin
94+ : parsedOrigin . hostname . toLowerCase ( )
95+
96+ // Allow requests with no origin since those are just GET requests from same-site
97+ return (
98+ originLowerCase !== undefined &&
99+ ! isCsrfOriginAllowed ( originLowerCase , allowedOrigins ) &&
100+ warnOrBlockRequest ( res , originLowerCase , mode )
101+ )
101102}
0 commit comments