3.0.1 • Published 5 years ago

corsable v3.0.1

Weekly downloads
19
License
MIT
Repository
github
Last release
5 years ago

simple CORS

Summary

Simple CORS method to control response headers.

Install

npm install -P corsable

Usage

const corsable = require( 'corsable' );
const micro = require( 'micro' ); // or your chosen framework

const simple_handler = ( request, response ) => {
    corsable( response );

    micro.send( response, 200, 'this is a CORS-enabled response' );
};

const configured_handler = ( request, response ) => {
    corsable( {
        max_age: 3600,
        origin: 'somedomain.com',
        allow_methods: [ 'POST', 'PUT', 'GET', 'DELETE' ],
        allow_headers: [ 'Access-Control-Allow-Origin', 'Content-Type', 'Authorization','Accept' ],
        expose_headers: [ 'Authorization' ]
    }, response );

    micro.send( response, 200, 'this is a CORS-enabled and configured response' );
};

const origin_list_handler = ( request, response ) => {
    corsable( {
        origin: [ 'domain.com', 'otherdomain.com' ]
    }, request, response );

    micro.send( response, 200, 'this is a CORS-enabled response that respects a list of origins' );
};

const origin_regex_handler = ( request, response ) => {
    corsable( {
        origin: new RegExp( 'https\:\/\/(?:.*\.)?somedomain\.com', 'i' )
    }, request, response );

    micro.send( response, 200, 'this is a CORS-enabled response that requires an https origin that matches (*.)somedomain.com' );
};

Or, you can create some middleware (micro-compatible example, but should work for others as well):

const corsable = require( 'corsable' );
const middleware = options => handler => ( request, response ) => {
    corsable( options, response );
    return handler( request, response );
};

const cors = middleware( {
    max_age: 3600
} );

module.exports = cors( ( request, response ) => {
    // do your CORS-compatible thing
} );

Options

max_age (Access-Control-Max-Age) integer

default: 86400

origin (Access-Control-Allow-Origin) string, array, regexp

default: *

allow_methods (Access-Control-Allow-Methods) array

default: [ 'POST', 'GET', 'PUT', 'PATCH', 'DELETE', 'OPTIONS' ]

allow_headers (Access-Control-Allow-Headers) array

default: [ 'X-Requested-With', 'Access-Control-Allow-Origin', 'X-HTTP-Method-Override', 'Content-Type', 'Authorization', 'Accept', 'Cookie' ]

expose_headers (Access-Control-Expose-Headers) array

default: [ 'Authorization', 'Set-Cookie' ]

3.0.1

5 years ago

3.0.0

5 years ago

2.0.6

5 years ago

2.0.5

5 years ago

2.0.4

5 years ago

2.0.3

5 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.0

7 years ago