@@ -48,6 +48,10 @@ async function proxyRpcRequest(request: Request) {
4848
4949 const responseHeaders = new Headers ( response . headers ) ;
5050 for ( const [ key , value ] of corsHeaders . entries ( ) ) {
51+ if ( key . toLowerCase ( ) === "vary" ) {
52+ mergeVaryHeader ( responseHeaders , value ) ;
53+ continue ;
54+ }
5155 responseHeaders . set ( key , value ) ;
5256 }
5357
@@ -62,7 +66,7 @@ function buildCorsHeaders(request: Request) {
6266 const headers = new Headers ( ) ;
6367 const origin = request . headers . get ( "origin" ) ;
6468 if ( ! origin ) {
65- return null ;
69+ return headers ;
6670 }
6771
6872 if ( ! isAllowedOrigin ( origin ) ) {
@@ -80,6 +84,25 @@ function buildCorsHeaders(request: Request) {
8084 return headers ;
8185}
8286
87+ function mergeVaryHeader ( headers : Headers , value : string ) {
88+ const existing = headers . get ( "vary" ) ;
89+ if ( ! existing ) {
90+ headers . set ( "vary" , value ) ;
91+ return ;
92+ }
93+
94+ const existingValues = existing
95+ . split ( "," )
96+ . map ( ( entry ) => entry . trim ( ) . toLowerCase ( ) )
97+ . filter ( Boolean ) ;
98+ const additions = value
99+ . split ( "," )
100+ . map ( ( entry ) => entry . trim ( ) . toLowerCase ( ) )
101+ . filter ( Boolean ) ;
102+ const merged = Array . from ( new Set ( [ ...existingValues , ...additions ] ) ) ;
103+ headers . set ( "vary" , merged . join ( ", " ) ) ;
104+ }
105+
83106function isAllowedOrigin ( origin : string ) {
84107 let hostname = "" ;
85108 try {
0 commit comments