File tree Expand file tree Collapse file tree 4 files changed +27
-6
lines changed Expand file tree Collapse file tree 4 files changed +27
-6
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ ' @modern-js/server-core ' : patch
3
+ ---
4
+
5
+ fix(server): should sync all headers from req.headers
6
+ fix(server): 应该从 req.headers 同步所有的 headers
Original file line number Diff line number Diff line change @@ -25,11 +25,22 @@ export const createWebRequest = (
25
25
body ?: BodyInit ,
26
26
) : Request => {
27
27
const headerRecord : [ string , string ] [ ] = [ ] ;
28
- const len = req . rawHeaders . length ;
29
- for ( let i = 0 ; i < len ; i += 2 ) {
30
- const key = req . rawHeaders [ i ] ;
31
- if ( ! key . startsWith ( ':' ) ) {
32
- headerRecord . push ( [ key , req . rawHeaders [ i + 1 ] ] ) ;
28
+
29
+ for ( const [ key , value ] of Object . entries ( req . headers ) ) {
30
+ if ( key . startsWith ( ':' ) ) {
31
+ continue ;
32
+ }
33
+
34
+ if ( Array . isArray ( value ) ) {
35
+ for ( const item of value ) {
36
+ if ( item !== undefined ) {
37
+ headerRecord . push ( [ key , item ] ) ;
38
+ }
39
+ }
40
+ } else if ( value !== undefined ) {
41
+ if ( typeof value === 'string' ) {
42
+ headerRecord . push ( [ key , value ] ) ;
43
+ }
33
44
}
34
45
}
35
46
Original file line number Diff line number Diff line change @@ -381,7 +381,8 @@ async function getRenderMode(
381
381
return 'data' ;
382
382
}
383
383
const fallbackHeaderValue : string | null =
384
- req . headers . get ( fallbackHeader ) || nodeReq ?. headers [ fallbackHeader ] ;
384
+ ( req . headers . get ( fallbackHeader ) as string ) ||
385
+ ( nodeReq ?. headers [ fallbackHeader ] as string ) ;
385
386
if ( forceCSR && ( query . csr || fallbackHeaderValue ) ) {
386
387
if ( query . csr ) {
387
388
await onFallback ?.( 'query' ) ;
Original file line number Diff line number Diff line change
1
+ import type { IncomingMessage , ServerResponse } from 'http' ;
2
+ import type { Http2ServerRequest , Http2ServerResponse } from 'http2' ;
3
+
1
4
export type NodeRequest = IncomingMessage | Http2ServerRequest ;
2
5
export type NodeResponse = ServerResponse | Http2ServerResponse ;
You can’t perform that action at this time.
0 commit comments