@pristine-ts/http 4.0.2 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/cjs/cors/cors-preflight-response.interface.js +3 -0
- package/dist/lib/cjs/cors/cors-preflight-response.interface.js.map +1 -0
- package/dist/lib/cjs/cors/cors-request-context.interface.js +3 -0
- package/dist/lib/cjs/cors/cors-request-context.interface.js.map +1 -0
- package/dist/lib/cjs/cors/cors-request.handler.js +207 -0
- package/dist/lib/cjs/cors/cors-request.handler.js.map +1 -0
- package/dist/lib/cjs/cors/cors.js +20 -0
- package/dist/lib/cjs/cors/cors.js.map +1 -0
- package/dist/lib/cjs/http.configuration-keys.js +14 -0
- package/dist/lib/cjs/http.configuration-keys.js.map +1 -1
- package/dist/lib/cjs/http.module.js +101 -0
- package/dist/lib/cjs/http.module.js.map +1 -1
- package/dist/lib/cjs/servers/kernel.http-server.js +54 -5
- package/dist/lib/cjs/servers/kernel.http-server.js.map +1 -1
- package/dist/lib/esm/cors/cors-preflight-response.interface.js +2 -0
- package/dist/lib/esm/cors/cors-preflight-response.interface.js.map +1 -0
- package/dist/lib/esm/cors/cors-request-context.interface.js +2 -0
- package/dist/lib/esm/cors/cors-request-context.interface.js.map +1 -0
- package/dist/lib/esm/cors/cors-request.handler.js +204 -0
- package/dist/lib/esm/cors/cors-request.handler.js.map +1 -0
- package/dist/lib/esm/cors/cors.js +4 -0
- package/dist/lib/esm/cors/cors.js.map +1 -0
- package/dist/lib/esm/http.configuration-keys.js +14 -0
- package/dist/lib/esm/http.configuration-keys.js.map +1 -1
- package/dist/lib/esm/http.module.js +101 -0
- package/dist/lib/esm/http.module.js.map +1 -1
- package/dist/lib/esm/servers/kernel.http-server.js +54 -5
- package/dist/lib/esm/servers/kernel.http-server.js.map +1 -1
- package/dist/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/lib/tsconfig.tsbuildinfo +1 -1
- package/dist/types/cors/cors-preflight-response.interface.d.ts +20 -0
- package/dist/types/cors/cors-request-context.interface.d.ts +36 -0
- package/dist/types/cors/cors-request.handler.d.ts +94 -0
- package/dist/types/cors/cors.d.ts +3 -0
- package/dist/types/http.configuration-keys.d.ts +22 -0
- package/dist/types/http.module.d.ts +1 -0
- package/dist/types/servers/kernel.http-server.d.ts +13 -1
- package/package.json +10 -10
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { injectable } from "tsyringe";
|
|
14
|
+
import { injectConfig, moduleScoped } from "@pristine-ts/common";
|
|
15
|
+
import { HttpModuleKeyname } from "../http.module.keyname";
|
|
16
|
+
import { HttpConfigurationKeys } from "../http.configuration-keys";
|
|
17
|
+
/**
|
|
18
|
+
* The config-driven CORS policy engine that `KernelHttpServer` consults inside its request path,
|
|
19
|
+
* BEFORE `kernel.handle()` — the one place that sees the raw request/response and can answer a
|
|
20
|
+
* preflight or reject an origin without the networking `Router` ever running.
|
|
21
|
+
*
|
|
22
|
+
* All decision methods are pure functions of the injected configuration plus a normalized
|
|
23
|
+
* {@link CorsRequestContextInterface}, so the full behavior matrix is unit-testable by
|
|
24
|
+
* constructing this class directly (no live socket, no Node request object required).
|
|
25
|
+
*
|
|
26
|
+
* ## Activation
|
|
27
|
+
* CORS is **inactive unless configured**. Two independent switches:
|
|
28
|
+
* - `cors.allowed-origins` non-empty → origin/preflight/header-echo logic activates.
|
|
29
|
+
* - `cors.allowed-hosts` non-empty → the Host-header allowlist (DNS-rebinding defense) activates.
|
|
30
|
+
* With neither set, every method is a no-op and the server behaves exactly as it did before CORS
|
|
31
|
+
* existed.
|
|
32
|
+
*
|
|
33
|
+
* ## Guarantees
|
|
34
|
+
* - Never emits `Access-Control-Allow-Origin: *` — only an exact echo of an allow-listed Origin.
|
|
35
|
+
* - Never reflects an arbitrary Origin — an Origin absent from the allowlist gets no ACAO headers.
|
|
36
|
+
*/
|
|
37
|
+
let CorsRequestHandler = class CorsRequestHandler {
|
|
38
|
+
constructor(allowedOrigins, allowedMethods, allowedHeaders, exposedHeaders, maxAge, allowCredentials, allowPrivateNetwork, allowedHosts) {
|
|
39
|
+
this.allowedOrigins = this.normalizeList(allowedOrigins);
|
|
40
|
+
this.allowedMethods = this.normalizeList(allowedMethods);
|
|
41
|
+
this.allowedHeaders = this.normalizeList(allowedHeaders);
|
|
42
|
+
this.exposedHeaders = this.normalizeList(exposedHeaders);
|
|
43
|
+
this.maxAge = maxAge;
|
|
44
|
+
this.allowCredentials = allowCredentials === true;
|
|
45
|
+
this.allowPrivateNetwork = allowPrivateNetwork === true;
|
|
46
|
+
this.allowedHosts = this.normalizeList(allowedHosts);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* `true` when an origin allowlist is configured — gates the preflight short-circuit and the
|
|
50
|
+
* `Access-Control-Allow-Origin` echo on actual responses.
|
|
51
|
+
*/
|
|
52
|
+
get isOriginCheckEnabled() {
|
|
53
|
+
return this.allowedOrigins.length > 0;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* `true` when a Host allowlist is configured — gates the DNS-rebinding 403.
|
|
57
|
+
*/
|
|
58
|
+
get isHostCheckEnabled() {
|
|
59
|
+
return this.allowedHosts.length > 0;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Whether any CORS feature is active. `KernelHttpServer` can skip all CORS work when this is
|
|
63
|
+
* `false`, keeping the un-configured request path byte-for-byte identical to before.
|
|
64
|
+
*/
|
|
65
|
+
get isEnabled() {
|
|
66
|
+
return this.isOriginCheckEnabled || this.isHostCheckEnabled;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Normalizes a raw Node request into the transport-agnostic {@link CorsRequestContextInterface}.
|
|
70
|
+
* Node lower-cases header names on `IncomingMessage`, and multi-valued headers arrive as arrays;
|
|
71
|
+
* we take the method + the CORS-relevant headers and coerce them to the single-string shape the
|
|
72
|
+
* decision methods expect.
|
|
73
|
+
*/
|
|
74
|
+
buildContext(method, headers) {
|
|
75
|
+
var _a;
|
|
76
|
+
const readHeader = (name) => {
|
|
77
|
+
const value = headers[name];
|
|
78
|
+
if (Array.isArray(value)) {
|
|
79
|
+
return value[0];
|
|
80
|
+
}
|
|
81
|
+
return value !== null && value !== void 0 ? value : undefined;
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
method: (method !== null && method !== void 0 ? method : "GET").toUpperCase(),
|
|
85
|
+
origin: readHeader("origin"),
|
|
86
|
+
host: readHeader("host"),
|
|
87
|
+
accessControlRequestMethod: readHeader("access-control-request-method"),
|
|
88
|
+
accessControlRequestHeaders: readHeader("access-control-request-headers"),
|
|
89
|
+
accessControlRequestPrivateNetwork: ((_a = readHeader("access-control-request-private-network")) !== null && _a !== void 0 ? _a : "").toLowerCase() === "true",
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Host-header allowlist check (loopback DNS-rebinding defense). Returns `true` (allow) when no
|
|
94
|
+
* allowlist is configured; otherwise the request's `Host` must exactly match a configured entry
|
|
95
|
+
* (case-insensitive, since host names are). A missing `Host` against a configured allowlist is
|
|
96
|
+
* rejected. `KernelHttpServer` turns a `false` here into a `403` before any routing.
|
|
97
|
+
*/
|
|
98
|
+
isHostAllowed(host) {
|
|
99
|
+
if (this.isHostCheckEnabled === false) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
if (host === undefined) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
const normalizedHost = host.trim().toLowerCase();
|
|
106
|
+
return this.allowedHosts.some(allowedHost => allowedHost.toLowerCase() === normalizedHost);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Exact-match origin allowlist check. An absent Origin is never "allowed" (there is nothing to
|
|
110
|
+
* echo). We never wildcard and never reflect an arbitrary Origin.
|
|
111
|
+
*/
|
|
112
|
+
isOriginAllowed(origin) {
|
|
113
|
+
if (origin === undefined) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
const normalizedOrigin = origin.trim();
|
|
117
|
+
return this.allowedOrigins.some(allowedOrigin => allowedOrigin === normalizedOrigin);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Decides whether `context` is a CORS preflight that must be answered before routing, and if so
|
|
121
|
+
* returns the `204` response (status + headers) to write. Returns `undefined` when the request is
|
|
122
|
+
* not a preflight we own — the caller then lets it route normally.
|
|
123
|
+
*
|
|
124
|
+
* A CORS preflight is an `OPTIONS` carrying `Access-Control-Request-Method`. We only take over
|
|
125
|
+
* preflight handling when an origin allowlist is configured (same-origin requests never send
|
|
126
|
+
* `Access-Control-Request-Method`, so app-owned `OPTIONS` routes are never stolen). An allow-listed
|
|
127
|
+
* Origin gets the full `Access-Control-*` set; a disallowed Origin still gets a bare `204` with no
|
|
128
|
+
* ACAO — the browser blocks it, and we never leak an arbitrary Origin.
|
|
129
|
+
*/
|
|
130
|
+
buildPreflightResponse(context) {
|
|
131
|
+
if (this.isOriginCheckEnabled === false) {
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
if (context.method !== "OPTIONS" || context.accessControlRequestMethod === undefined) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
const headers = {};
|
|
138
|
+
if (this.isOriginAllowed(context.origin)) {
|
|
139
|
+
headers["Access-Control-Allow-Origin"] = context.origin;
|
|
140
|
+
headers["Vary"] = "Origin";
|
|
141
|
+
headers["Access-Control-Allow-Methods"] = this.allowedMethods.join(", ");
|
|
142
|
+
headers["Access-Control-Allow-Headers"] = this.allowedHeaders.join(", ");
|
|
143
|
+
headers["Access-Control-Max-Age"] = String(this.maxAge);
|
|
144
|
+
if (this.allowCredentials) {
|
|
145
|
+
headers["Access-Control-Allow-Credentials"] = "true";
|
|
146
|
+
}
|
|
147
|
+
// Chrome Private Network Access: only answer the grant when the preflight actually asked for
|
|
148
|
+
// it AND the operator opted in. Silence otherwise so we never advertise a capability we
|
|
149
|
+
// weren't configured to allow.
|
|
150
|
+
if (this.allowPrivateNetwork && context.accessControlRequestPrivateNetwork) {
|
|
151
|
+
headers["Access-Control-Allow-Private-Network"] = "true";
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return { statusCode: 204, headers };
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* The CORS headers to add to an ACTUAL (non-preflight) response — success OR error. Returns an
|
|
158
|
+
* empty object when origin-checking is off or the Origin is not allow-listed. Applied to 4xx/5xx
|
|
159
|
+
* responses too: without `Access-Control-Allow-Origin` the browser cannot read an error body.
|
|
160
|
+
*/
|
|
161
|
+
buildResponseHeaders(origin) {
|
|
162
|
+
if (this.isOriginCheckEnabled === false || this.isOriginAllowed(origin) === false) {
|
|
163
|
+
return {};
|
|
164
|
+
}
|
|
165
|
+
const headers = {
|
|
166
|
+
"Access-Control-Allow-Origin": origin,
|
|
167
|
+
"Vary": "Origin",
|
|
168
|
+
};
|
|
169
|
+
if (this.allowCredentials) {
|
|
170
|
+
headers["Access-Control-Allow-Credentials"] = "true";
|
|
171
|
+
}
|
|
172
|
+
if (this.exposedHeaders.length > 0) {
|
|
173
|
+
headers["Access-Control-Expose-Headers"] = this.exposedHeaders.join(", ");
|
|
174
|
+
}
|
|
175
|
+
return headers;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Coerces a list-shaped config value into a trimmed, empty-stripped `string[]`. Accepts both the
|
|
179
|
+
* comma-separated string form (env vars / defaults) and the `string[]` form (programmatic
|
|
180
|
+
* `kernel.start()` config).
|
|
181
|
+
*/
|
|
182
|
+
normalizeList(value) {
|
|
183
|
+
if (value === undefined || value === null) {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
const parts = Array.isArray(value) ? value : String(value).split(",");
|
|
187
|
+
return parts.map(part => part.trim()).filter(part => part.length > 0);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
CorsRequestHandler = __decorate([
|
|
191
|
+
moduleScoped(HttpModuleKeyname),
|
|
192
|
+
injectable(),
|
|
193
|
+
__param(0, injectConfig(HttpConfigurationKeys.CorsAllowedOrigins)),
|
|
194
|
+
__param(1, injectConfig(HttpConfigurationKeys.CorsAllowedMethods)),
|
|
195
|
+
__param(2, injectConfig(HttpConfigurationKeys.CorsAllowedHeaders)),
|
|
196
|
+
__param(3, injectConfig(HttpConfigurationKeys.CorsExposedHeaders)),
|
|
197
|
+
__param(4, injectConfig(HttpConfigurationKeys.CorsMaxAge)),
|
|
198
|
+
__param(5, injectConfig(HttpConfigurationKeys.CorsAllowCredentials)),
|
|
199
|
+
__param(6, injectConfig(HttpConfigurationKeys.CorsAllowPrivateNetwork)),
|
|
200
|
+
__param(7, injectConfig(HttpConfigurationKeys.CorsAllowedHosts)),
|
|
201
|
+
__metadata("design:paramtypes", [Object, Object, Object, Object, Number, Boolean, Boolean, Object])
|
|
202
|
+
], CorsRequestHandler);
|
|
203
|
+
export { CorsRequestHandler };
|
|
204
|
+
//# sourceMappingURL=cors-request.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cors-request.handler.js","sourceRoot":"","sources":["../../../../src/cors/cors-request.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../../src/cors/cors.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC"}
|
|
@@ -17,5 +17,19 @@ export const HttpConfigurationKeys = {
|
|
|
17
17
|
KernelServerPort: "pristine.http.kernel-server.port",
|
|
18
18
|
KernelServerTlsKeyPath: "pristine.http.kernel-server.tls.key-path",
|
|
19
19
|
KernelServerTlsCertPath: "pristine.http.kernel-server.tls.cert-path",
|
|
20
|
+
/**
|
|
21
|
+
* CORS keys consumed by `CorsRequestHandler` inside `KernelHttpServer`'s request path.
|
|
22
|
+
* CORS is inactive unless `cors.allowed-origins` (and/or `cors.allowed-hosts`) is set —
|
|
23
|
+
* a server with none of these configured behaves exactly as it did before CORS existed.
|
|
24
|
+
* Each list key accepts a comma-separated string or a `string[]`.
|
|
25
|
+
*/
|
|
26
|
+
CorsAllowedOrigins: "pristine.http.cors.allowed-origins",
|
|
27
|
+
CorsAllowedMethods: "pristine.http.cors.allowed-methods",
|
|
28
|
+
CorsAllowedHeaders: "pristine.http.cors.allowed-headers",
|
|
29
|
+
CorsExposedHeaders: "pristine.http.cors.exposed-headers",
|
|
30
|
+
CorsMaxAge: "pristine.http.cors.max-age",
|
|
31
|
+
CorsAllowCredentials: "pristine.http.cors.allow-credentials",
|
|
32
|
+
CorsAllowPrivateNetwork: "pristine.http.cors.allow-private-network",
|
|
33
|
+
CorsAllowedHosts: "pristine.http.cors.allowed-hosts",
|
|
20
34
|
};
|
|
21
35
|
//# sourceMappingURL=http.configuration-keys.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.configuration-keys.js","sourceRoot":"","sources":["../../../src/http.configuration-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,cAAc,EAAE,+BAA+B;IAC/C,qBAAqB,EAAE,wCAAwC;IAC/D,kBAAkB,EAAE,qCAAqC;IACzD,mBAAmB,EAAE,qCAAqC;IAC1D,gBAAgB,EAAE,kCAAkC;IACpD,sBAAsB,EAAE,0CAA0C;IAClE,uBAAuB,EAAE,2CAA2C;
|
|
1
|
+
{"version":3,"file":"http.configuration-keys.js","sourceRoot":"","sources":["../../../src/http.configuration-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,cAAc,EAAE,+BAA+B;IAC/C,qBAAqB,EAAE,wCAAwC;IAC/D,kBAAkB,EAAE,qCAAqC;IACzD,mBAAmB,EAAE,qCAAqC;IAC1D,gBAAgB,EAAE,kCAAkC;IACpD,sBAAsB,EAAE,0CAA0C;IAClE,uBAAuB,EAAE,2CAA2C;IAEpE;;;;;OAKG;IACH,kBAAkB,EAAE,oCAAoC;IACxD,kBAAkB,EAAE,oCAAoC;IACxD,kBAAkB,EAAE,oCAAoC;IACxD,kBAAkB,EAAE,oCAAoC;IACxD,UAAU,EAAE,4BAA4B;IACxC,oBAAoB,EAAE,sCAAsC;IAC5D,uBAAuB,EAAE,0CAA0C;IACnE,gBAAgB,EAAE,kCAAkC;CAC5C,CAAC"}
|
|
@@ -18,6 +18,7 @@ import { KernelHttpServer } from "./servers/kernel.http-server";
|
|
|
18
18
|
export * from "./http.module.keyname";
|
|
19
19
|
export * from "./commands/commands";
|
|
20
20
|
export * from "./clients/clients";
|
|
21
|
+
export * from "./cors/cors";
|
|
21
22
|
export * from "./enums/enums";
|
|
22
23
|
export * from "./errors/errors";
|
|
23
24
|
export * from "./interceptors/interceptors";
|
|
@@ -110,6 +111,106 @@ export const HttpModule = {
|
|
|
110
111
|
new EnvironmentVariableResolver("PRISTINE_HTTP_KERNEL_SERVER_TLS_CERT_PATH"),
|
|
111
112
|
]
|
|
112
113
|
},
|
|
114
|
+
/**
|
|
115
|
+
* CORS — handled by `CorsRequestHandler` inside `KernelHttpServer`'s request path. All keys
|
|
116
|
+
* carry defaults so `@injectConfig` always resolves; CORS stays INACTIVE until
|
|
117
|
+
* `cors.allowed-origins` (and/or `cors.allowed-hosts`) is set. List keys accept a
|
|
118
|
+
* comma-separated string (env/default) or a `string[]` (programmatic config).
|
|
119
|
+
*
|
|
120
|
+
* Exact-match origin allowlist. Empty (the default) = CORS disabled: no preflight
|
|
121
|
+
* short-circuit and no `Access-Control-Allow-Origin` echo. Never wildcarded.
|
|
122
|
+
*/
|
|
123
|
+
{
|
|
124
|
+
parameterName: `${HttpModuleKeyname}.cors.allowed-origins`,
|
|
125
|
+
defaultValue: "",
|
|
126
|
+
isRequired: false,
|
|
127
|
+
defaultResolvers: [
|
|
128
|
+
new EnvironmentVariableResolver("PRISTINE_HTTP_CORS_ALLOWED_ORIGINS"),
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
/**
|
|
132
|
+
* Methods advertised in the preflight `Access-Control-Allow-Methods` response.
|
|
133
|
+
*/
|
|
134
|
+
{
|
|
135
|
+
parameterName: `${HttpModuleKeyname}.cors.allowed-methods`,
|
|
136
|
+
defaultValue: "GET,POST,PUT,DELETE,PATCH,OPTIONS",
|
|
137
|
+
isRequired: false,
|
|
138
|
+
defaultResolvers: [
|
|
139
|
+
new EnvironmentVariableResolver("PRISTINE_HTTP_CORS_ALLOWED_METHODS"),
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
/**
|
|
143
|
+
* Request headers advertised in the preflight `Access-Control-Allow-Headers` response.
|
|
144
|
+
*/
|
|
145
|
+
{
|
|
146
|
+
parameterName: `${HttpModuleKeyname}.cors.allowed-headers`,
|
|
147
|
+
defaultValue: "Content-Type",
|
|
148
|
+
isRequired: false,
|
|
149
|
+
defaultResolvers: [
|
|
150
|
+
new EnvironmentVariableResolver("PRISTINE_HTTP_CORS_ALLOWED_HEADERS"),
|
|
151
|
+
]
|
|
152
|
+
},
|
|
153
|
+
/**
|
|
154
|
+
* Response headers exposed to the browser via `Access-Control-Expose-Headers` on actual
|
|
155
|
+
* responses. Empty (the default) omits the header entirely.
|
|
156
|
+
*/
|
|
157
|
+
{
|
|
158
|
+
parameterName: `${HttpModuleKeyname}.cors.exposed-headers`,
|
|
159
|
+
defaultValue: "",
|
|
160
|
+
isRequired: false,
|
|
161
|
+
defaultResolvers: [
|
|
162
|
+
new EnvironmentVariableResolver("PRISTINE_HTTP_CORS_EXPOSED_HEADERS"),
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
/**
|
|
166
|
+
* Seconds a browser may cache the preflight result (`Access-Control-Max-Age`).
|
|
167
|
+
*/
|
|
168
|
+
{
|
|
169
|
+
parameterName: `${HttpModuleKeyname}.cors.max-age`,
|
|
170
|
+
defaultValue: 600,
|
|
171
|
+
isRequired: false,
|
|
172
|
+
defaultResolvers: [
|
|
173
|
+
new NumberResolver(new EnvironmentVariableResolver("PRISTINE_HTTP_CORS_MAX_AGE")),
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
/**
|
|
177
|
+
* When true, emit `Access-Control-Allow-Credentials: true` on preflight and actual responses
|
|
178
|
+
* for allow-listed origins (lets the browser send cookies / `Authorization`).
|
|
179
|
+
*/
|
|
180
|
+
{
|
|
181
|
+
parameterName: `${HttpModuleKeyname}.cors.allow-credentials`,
|
|
182
|
+
defaultValue: false,
|
|
183
|
+
isRequired: false,
|
|
184
|
+
defaultResolvers: [
|
|
185
|
+
new BooleanResolver(new EnvironmentVariableResolver("PRISTINE_HTTP_CORS_ALLOW_CREDENTIALS")),
|
|
186
|
+
]
|
|
187
|
+
},
|
|
188
|
+
/**
|
|
189
|
+
* Chrome Private Network Access. When true, answer `Access-Control-Allow-Private-Network: true`
|
|
190
|
+
* to a preflight that carries `Access-Control-Request-Private-Network: true` — required for a
|
|
191
|
+
* public/secure site to call a loopback/private-network daemon.
|
|
192
|
+
*/
|
|
193
|
+
{
|
|
194
|
+
parameterName: `${HttpModuleKeyname}.cors.allow-private-network`,
|
|
195
|
+
defaultValue: false,
|
|
196
|
+
isRequired: false,
|
|
197
|
+
defaultResolvers: [
|
|
198
|
+
new BooleanResolver(new EnvironmentVariableResolver("PRISTINE_HTTP_CORS_ALLOW_PRIVATE_NETWORK")),
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
/**
|
|
202
|
+
* Optional `Host`-header allowlist (loopback DNS-rebinding defense). When set, a request whose
|
|
203
|
+
* `Host` is not listed is rejected with `403` before routing. Empty (the default) disables the
|
|
204
|
+
* check. Independent of `allowed-origins`.
|
|
205
|
+
*/
|
|
206
|
+
{
|
|
207
|
+
parameterName: `${HttpModuleKeyname}.cors.allowed-hosts`,
|
|
208
|
+
defaultValue: "",
|
|
209
|
+
isRequired: false,
|
|
210
|
+
defaultResolvers: [
|
|
211
|
+
new EnvironmentVariableResolver("PRISTINE_HTTP_CORS_ALLOWED_HOSTS"),
|
|
212
|
+
]
|
|
213
|
+
},
|
|
113
214
|
],
|
|
114
215
|
onShutdown: (container) => __awaiter(void 0, void 0, void 0, function* () {
|
|
115
216
|
// The KernelHttpServer self-tracks whether `start()` was actually called: if pristine start
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.module.js","sourceRoot":"","sources":["../../../src/http.module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.module.js","sourceRoot":"","sources":["../../../src/http.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,7 @@ import fs from "fs";
|
|
|
26
26
|
import { EventIdManager, ExecutionContextKeynameEnum, Kernel } from "@pristine-ts/core";
|
|
27
27
|
import { moduleScoped, Request, Response, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
|
|
28
28
|
import { HttpModuleKeyname } from "../http.module.keyname";
|
|
29
|
+
import { CorsRequestHandler } from "../cors/cors-request.handler";
|
|
29
30
|
/**
|
|
30
31
|
* Wraps Node's `http.Server` (or `https.Server` when TLS config is present) and routes every
|
|
31
32
|
* incoming request through `kernel.handle()`. The kernel dispatches to the existing
|
|
@@ -43,7 +44,7 @@ import { HttpModuleKeyname } from "../http.module.keyname";
|
|
|
43
44
|
* rather than silently leaking the previous server.
|
|
44
45
|
*/
|
|
45
46
|
let KernelHttpServer = class KernelHttpServer {
|
|
46
|
-
constructor(defaultAddress, defaultPort, defaultTlsKeyPath, defaultTlsCertPath, logHandler, kernel, eventIdManager) {
|
|
47
|
+
constructor(defaultAddress, defaultPort, defaultTlsKeyPath, defaultTlsCertPath, logHandler, kernel, eventIdManager, corsRequestHandler) {
|
|
47
48
|
this.defaultAddress = defaultAddress;
|
|
48
49
|
this.defaultPort = defaultPort;
|
|
49
50
|
this.defaultTlsKeyPath = defaultTlsKeyPath;
|
|
@@ -51,6 +52,7 @@ let KernelHttpServer = class KernelHttpServer {
|
|
|
51
52
|
this.logHandler = logHandler;
|
|
52
53
|
this.kernel = kernel;
|
|
53
54
|
this.eventIdManager = eventIdManager;
|
|
55
|
+
this.corsRequestHandler = corsRequestHandler;
|
|
54
56
|
/**
|
|
55
57
|
* Identifier reported back via `RuntimeServerInterface.name`. Switches to `"https"` when
|
|
56
58
|
* TLS config is present, mainly so log lines and `pristine info`-style introspection make
|
|
@@ -155,6 +157,15 @@ let KernelHttpServer = class KernelHttpServer {
|
|
|
155
157
|
});
|
|
156
158
|
});
|
|
157
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* The address the underlying server is bound to, or `null` when not listening. For a TCP socket
|
|
162
|
+
* this is `{address, family, port}` — useful when binding to port `0` (ephemeral port) and the
|
|
163
|
+
* caller needs to discover the assigned port afterwards.
|
|
164
|
+
*/
|
|
165
|
+
getAddress() {
|
|
166
|
+
var _a, _b;
|
|
167
|
+
return (_b = (_a = this.server) === null || _a === void 0 ? void 0 : _a.address()) !== null && _b !== void 0 ? _b : null;
|
|
168
|
+
}
|
|
158
169
|
/**
|
|
159
170
|
* Reads the body, builds a Pristine `Request`, dispatches via the kernel, writes the
|
|
160
171
|
* resulting `Response`. All errors are caught and turned into a 500 response so the
|
|
@@ -163,15 +174,43 @@ let KernelHttpServer = class KernelHttpServer {
|
|
|
163
174
|
*/
|
|
164
175
|
handleRequest(req, res) {
|
|
165
176
|
return __awaiter(this, void 0, void 0, function* () {
|
|
166
|
-
var _a;
|
|
177
|
+
var _a, _b;
|
|
167
178
|
const requestId = (_a = req.headers["x-pristine-request-id"]) !== null && _a !== void 0 ? _a : this.eventIdManager.generateEventId();
|
|
179
|
+
// Normalize the raw request into the CORS decision context up-front. When no CORS config is
|
|
180
|
+
// present every method below is a no-op, so this whole block is transparent to un-configured
|
|
181
|
+
// servers. `corsResponseHeaders` (ACAO + Vary + ...) is computed once here and applied to
|
|
182
|
+
// BOTH the success and the error/500 responses below — a browser can only read an error body
|
|
183
|
+
// if the error response also carries Access-Control-Allow-Origin.
|
|
184
|
+
const corsContext = this.corsRequestHandler.buildContext((_b = req.method) !== null && _b !== void 0 ? _b : "GET", req.headers);
|
|
185
|
+
const corsResponseHeaders = this.corsRequestHandler.buildResponseHeaders(corsContext.origin);
|
|
168
186
|
try {
|
|
187
|
+
// 1. Host-header allowlist (loopback DNS-rebinding defense) — reject before routing and
|
|
188
|
+
// before reading the body, so a rejected caller can't stream a payload at us.
|
|
189
|
+
if (this.corsRequestHandler.isHostAllowed(corsContext.host) === false) {
|
|
190
|
+
this.logHandler.warning("KernelHttpServer: rejecting request with disallowed Host header", {
|
|
191
|
+
extra: { host: corsContext.host, url: req.url, method: req.method, requestId },
|
|
192
|
+
});
|
|
193
|
+
res.statusCode = 403;
|
|
194
|
+
this.applyHeaders(res, corsResponseHeaders);
|
|
195
|
+
res.setHeader("content-type", "application/json");
|
|
196
|
+
res.end(JSON.stringify({ error: "Forbidden", requestId }));
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
// 2. CORS preflight — answered with a 204 and short-circuited BEFORE kernel.handle, since a
|
|
200
|
+
// preflight never matches a real route in the networking Router.
|
|
201
|
+
const preflight = this.corsRequestHandler.buildPreflightResponse(corsContext);
|
|
202
|
+
if (preflight !== undefined) {
|
|
203
|
+
res.statusCode = preflight.statusCode;
|
|
204
|
+
this.applyHeaders(res, preflight.headers);
|
|
205
|
+
res.end();
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
169
208
|
const request = yield this.mapToPristineRequest(req, requestId);
|
|
170
209
|
const result = yield this.kernel.handle(request, {
|
|
171
210
|
keyname: ExecutionContextKeynameEnum.Http,
|
|
172
211
|
context: null,
|
|
173
212
|
});
|
|
174
|
-
this.writeResponse(res, result);
|
|
213
|
+
this.writeResponse(res, result, corsResponseHeaders);
|
|
175
214
|
}
|
|
176
215
|
catch (error) {
|
|
177
216
|
this.logHandler.error("KernelHttpServer: unhandled error while processing request", {
|
|
@@ -181,6 +220,9 @@ let KernelHttpServer = class KernelHttpServer {
|
|
|
181
220
|
// can only destroy the socket — but most kernel.handle errors propagate before any write.
|
|
182
221
|
if (res.headersSent === false) {
|
|
183
222
|
res.statusCode = 500;
|
|
223
|
+
// Echo CORS headers on the error path too — otherwise the browser blocks the response and
|
|
224
|
+
// the caller never sees the 500 body.
|
|
225
|
+
this.applyHeaders(res, corsResponseHeaders);
|
|
184
226
|
res.setHeader("content-type", "application/json");
|
|
185
227
|
res.end(JSON.stringify({ error: "Internal Server Error", requestId }));
|
|
186
228
|
}
|
|
@@ -261,9 +303,13 @@ let KernelHttpServer = class KernelHttpServer {
|
|
|
261
303
|
* Writes a Pristine `Response` (or any object — handlers that return raw JSON serialize as-is)
|
|
262
304
|
* back to the underlying `ServerResponse`. Default status is 200, default content-type is
|
|
263
305
|
* `application/json` when the body is non-string.
|
|
306
|
+
*
|
|
307
|
+
* `corsHeaders` (empty when CORS is off or the Origin isn't allow-listed) is applied AFTER the
|
|
308
|
+
* response's own headers so the `Access-Control-*` set is authoritative and a handler can't
|
|
309
|
+
* accidentally clobber it.
|
|
264
310
|
* @private
|
|
265
311
|
*/
|
|
266
|
-
writeResponse(res, result) {
|
|
312
|
+
writeResponse(res, result, corsHeaders = {}) {
|
|
267
313
|
var _a, _b;
|
|
268
314
|
const isPristineResponse = result instanceof Response || (result !== null && typeof result === "object" && typeof result.status === "number" && "body" in result);
|
|
269
315
|
const status = isPristineResponse ? ((_a = result.status) !== null && _a !== void 0 ? _a : 200) : 200;
|
|
@@ -281,6 +327,7 @@ let KernelHttpServer = class KernelHttpServer {
|
|
|
281
327
|
// Buffer body: write directly without re-encoding. Don't auto-set content-type — the
|
|
282
328
|
// handler that produced a Buffer is presumed to know what it's sending.
|
|
283
329
|
this.applyHeaders(res, headers);
|
|
330
|
+
this.applyHeaders(res, corsHeaders);
|
|
284
331
|
res.end(body);
|
|
285
332
|
return;
|
|
286
333
|
}
|
|
@@ -291,6 +338,7 @@ let KernelHttpServer = class KernelHttpServer {
|
|
|
291
338
|
}
|
|
292
339
|
}
|
|
293
340
|
this.applyHeaders(res, headers);
|
|
341
|
+
this.applyHeaders(res, corsHeaders);
|
|
294
342
|
res.end(serializedBody);
|
|
295
343
|
}
|
|
296
344
|
applyHeaders(res, headers) {
|
|
@@ -318,7 +366,8 @@ KernelHttpServer = __decorate([
|
|
|
318
366
|
__param(3, inject(`%${HttpModuleKeyname}.kernel-server.tls.cert-path%`)),
|
|
319
367
|
__param(4, inject("LogHandlerInterface")),
|
|
320
368
|
__metadata("design:paramtypes", [String, Number, String, String, Object, Kernel,
|
|
321
|
-
EventIdManager
|
|
369
|
+
EventIdManager,
|
|
370
|
+
CorsRequestHandler])
|
|
322
371
|
], KernelHttpServer);
|
|
323
372
|
export { KernelHttpServer };
|
|
324
373
|
//# sourceMappingURL=kernel.http-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.http-server.js","sourceRoot":"","sources":["../../../../src/servers/kernel.http-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kernel.http-server.js","sourceRoot":"","sources":["../../../../src/servers/kernel.http-server.ts"],"names":[],"mappings":"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"}
|