gcframe-cors

0.2.0 • Public • Published

GCFrame

Help serve HTTP endpoints with Google Cloud Functions.

Cors

The CORS middleware helps allow/deny access to an HTTP function based on CORS request headers. If it does not receive an Origin header it will allow access.

Installation

npm install -s gcframe-cors

API

cors(options, [, next])

Allows/denies HTTP access to a function based on CORS request headers received.

Argument Desription Default
options.allowOrigin An Array object containing a list of allowed origins. Or a special case * string to match all origins. []
options.allowMethods An Array object containing a list of allowed methods. ['GET']
options.allowHeaders An Array object containing a list of allowed headers. []
next A gcframe/middleware function, or the cloud function itself. If not provided the function returns a "partially applied" function which will except the next argument. required

The cors function will add appropriate CORS headers to a response to allow or deny the browser from accessing the response.

Access-Control-Allow-Origin will be set with the value of the Origin header of the request if...

  • it is included in options.allowOrigin list, or
  • the special case * is used in options.allowOrigin.

Access-Control-Allow-Headers will be set with any headers included in options.allowHeaders list.

Access-Control-Allow-Methods will be set with any methods included in options.allowMethods if the request method was OPTIONS.

Read more about CORS on the MDN web docs.

Examples

const cors = require('gcframe-cors');

// Define google cloud function, main handler.
function helloWorld (req, res) {
  return res.send(`Hello world`);
}

// Allow all origins to make POST requests to the function.
var functionWithCors = cors({ allowOrigin: '*', allowMethods: 'POST' }, helloWorld)

module.exports = {
  helloWorld: functionWithCors,
}

Compose router with other gcframe functions

gcframe functions are auto-curried handler-last functions, so they can be composed in a functional style.

const router = require('gcframe-router');
const cors = require('gcframe-cors);

// Define google cloud function, main handler.
function helloWorld (req, res) {
  // Access named parameter `key`.
  return res.send(`Hello ${req.params.name});
}

// Match GET requests with a single named parameter.
const routerMiddleware = router('GET', '/:key');
// Allow all origins to make POST requests to the function.
const corsMiddleware = cors({ allowOrigin: '*', allowMethods: 'POST' }, helloWorld)

// Compose gcframe functions into a single middleware function.
const handle = compose(corsMiddleware, routerMiddleware);

module.exports = {
  helloWorld: handle(helloWorld),
}

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.2.0
    0
    • latest

Version History

Package Sidebar

Install

npm i gcframe-cors

Weekly Downloads

0

Version

0.2.0

License

MIT

Unpacked Size

5.04 kB

Total Files

3

Last publish

Collaborators

  • ahume