Module middleware/cors
Cross-site HTTP request headers
Implements the CORS (Cross-Origin Resource Sharing) protocol to enable cross-origin requests in browsers. Arbitrary HTTP clients may not comply to the protocol, so CORS cannot replace any server-side security mechanism.
Configuration options:
app.cors() accepts an object as parameter containing the following properties:
-
allowOrigin: configures theAccess-Control-Allow-Originheader depending on the request's origin. Defaults to"*". The following options are supported:-
Stringto set a specific origin; e.g."https://example.com"or"*" -
RegExpfor dynamic origins; e.g./https:\/\/www[12345]\.example\.com/ -
Arrayof strings to allow a set of different origins; e.g.["https://example.com", "https://www.example.com"]
-
-
allowMethods: configuresAccess-Control-Allow-Methods; e.g.["GET", "POST", "DELETE"] -
allowHeaders: configuresAccess-Control-Allow-Headers; e.g.User-Agent, X-Custom-Header -
exposeHeaders: configuresAccess-Control-Expose-Headers; e.g.Content-Length, X-Kuma-Revision -
allowCredentials: iftrue,Access-Control-Allow-Credentialswill be set to"true" -
maxAge: configuresAccess-Control-Max-Age; use a negative value to disable preflight request caching -
passthroughPreflights: if true, preflight requests will be forwarded to subsequent middlewares -
optionsSuccessStatus: default HTTP status code for preflight responses
The default configuration is equivalent to:
app.cors({
allowOrigin: "*",
allowMethods: ["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE"],
allowHeaders: [],
exposeHeaders: [],
allowCredentials: false,
maxAge: -1,
passthroughPreflights: false,
optionsSuccessStatus: 204
});
For a detailed explanation on what the different headers do, see MDN on CORS.
Example
app.configure("cors");
app.cors({
allowOrigin: ["https://example.com", "https://www.example.com"],
allowMethods: ["POST", "GET", "DELETE"],
allowHeaders: ["X-PingOther"],
exposeHeaders: []
maxAge: 1728000,
allowCredentials: true
})
Functions
- middleware (next, app)