File tree Expand file tree Collapse file tree 3 files changed +31
-0
lines changed Expand file tree Collapse file tree 3 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -1017,6 +1017,14 @@ export default abstract class Server<
1017
1017
req . headers [ 'x-forwarded-proto' ] ??= isHttps ? 'https' : 'http'
1018
1018
req . headers [ 'x-forwarded-for' ] ??= originalRequest ?. socket ?. remoteAddress
1019
1019
1020
+ // Validate that if i18n isn't configured or the passed parameters are not
1021
+ // valid it should be removed from the query.
1022
+ if ( ! this . i18nProvider ?. validateQuery ( parsedUrl . query ) ) {
1023
+ delete parsedUrl . query . __nextLocale
1024
+ delete parsedUrl . query . __nextDefaultLocale
1025
+ delete parsedUrl . query . __nextInferredLocaleFromDefault
1026
+ }
1027
+
1020
1028
// This should be done before any normalization of the pathname happens as
1021
1029
// it captures the initial URL.
1022
1030
this . attachRequestMeta ( req , parsedUrl )
Original file line number Diff line number Diff line change @@ -134,6 +134,25 @@ export class I18NProvider {
134
134
}
135
135
}
136
136
137
+ private validate ( locale : string ) : boolean {
138
+ return this . lowerCaseLocales . includes ( locale . toLowerCase ( ) )
139
+ }
140
+
141
+ public validateQuery ( query : NextParsedUrlQuery ) {
142
+ if ( query . __nextLocale && ! this . validate ( query . __nextLocale ) ) {
143
+ return false
144
+ }
145
+
146
+ if (
147
+ query . __nextDefaultLocale &&
148
+ ! this . validate ( query . __nextDefaultLocale )
149
+ ) {
150
+ return false
151
+ }
152
+
153
+ return true
154
+ }
155
+
137
156
/**
138
157
* Analyzes the pathname for a locale and returns the pathname without it.
139
158
*
Original file line number Diff line number Diff line change @@ -218,6 +218,10 @@ export function getResolveRoutes(
218
218
parsedUrl . pathname = maybeAddTrailingSlash ( parsedUrl . pathname )
219
219
}
220
220
}
221
+ } else {
222
+ delete parsedUrl . query . __nextLocale
223
+ delete parsedUrl . query . __nextDefaultLocale
224
+ delete parsedUrl . query . __nextInferredLocaleFromDefault
221
225
}
222
226
223
227
const checkLocaleApi = ( pathname : string ) => {
You can’t perform that action at this time.
0 commit comments