@@ -21,6 +21,7 @@ const origin = env("ORIGIN", undefined);
21
21
const address_header = env ( "ADDRESS_HEADER" , "" ) . toLowerCase ( ) ;
22
22
const protocol_header = env ( "PROTOCOL_HEADER" , "" ) . toLowerCase ( ) ;
23
23
const host_header = env ( "HOST_HEADER" , "host" ) . toLowerCase ( ) ;
24
+ const port_header = env ( "PORT_HEADER" , "" ) . toLowerCase ( ) ;
24
25
25
26
/** @param {boolean } assets */
26
27
export default function ( assets ) {
@@ -94,26 +95,26 @@ function serve(path, client = false) {
94
95
95
96
/**@param {Request } request */
96
97
function ssr ( request ) {
97
- if ( origin ) {
98
- const requestOrigin = get_origin ( request . headers ) ;
99
- if ( origin !== requestOrigin ) {
100
- const url = request . url . slice ( request . url . split ( "/" , 3 ) . join ( "/" ) . length ) ;
101
- request = new Request ( origin + url , {
102
- method : request . method ,
103
- headers : request . headers ,
104
- body : request . body ,
105
- referrer : request . referrer ,
106
- referrerPolicy : request . referrerPolicy ,
107
- mode : request . mode ,
108
- credentials : request . credentials ,
109
- cache : request . cache ,
110
- redirect : request . redirect ,
111
- integrity : request . integrity ,
112
- } ) ;
113
- }
114
- }
98
+ const baseOrigin = origin || get_origin ( request . headers ) ;
99
+ const url = request . url . slice ( request . url . split ( "/" , 3 ) . join ( "/" ) . length ) ;
100
+ request = new Request ( baseOrigin + url , {
101
+ method : request . method ,
102
+ headers : request . headers ,
103
+ body : request . body ,
104
+ referrer : request . referrer ,
105
+ referrerPolicy : request . referrerPolicy ,
106
+ mode : request . mode ,
107
+ credentials : request . credentials ,
108
+ cache : request . cache ,
109
+ redirect : request . redirect ,
110
+ integrity : request . integrity ,
111
+ } ) ;
115
112
116
- if ( address_header && ! request . headers . has ( address_header ) ) {
113
+ if (
114
+ address_header &&
115
+ request . headers . get ( host_header ) !== "127.0.0.1" &&
116
+ ! request . headers . has ( address_header )
117
+ ) {
117
118
throw new Error (
118
119
`Address header was specified with ${
119
120
ENV_PREFIX + "ADDRESS_HEADER"
@@ -123,7 +124,7 @@ function ssr(request) {
123
124
124
125
return server . respond ( request , {
125
126
getClientAddress ( ) {
126
- if ( address_header ) {
127
+ if ( address_header && request . headers . get ( host_header ) !== "127.0.0.1" ) {
127
128
const value = /** @type {string } */ ( request . headers . get ( address_header ) ) || "" ;
128
129
129
130
if ( address_header === "x-forwarded-for" ) {
@@ -162,5 +163,10 @@ function ssr(request) {
162
163
function get_origin ( headers ) {
163
164
const protocol = ( protocol_header && headers . get ( protocol_header ) ) || "https" ;
164
165
const host = headers . get ( host_header ) ;
165
- return `${ protocol } ://${ host } ` ;
166
+ const port = port_header && headers [ port_header ] ;
167
+ if ( port ) {
168
+ return `${ protocol } ://${ host } :${ port } ` ;
169
+ } else {
170
+ return `${ protocol } ://${ host } ` ;
171
+ }
166
172
}
0 commit comments