Skip to content

Instantly share code, notes, and snippets.

@vtellier
Created December 13, 2017 22:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vtellier/9acb579f81e1a817e182122e8ac2a995 to your computer and use it in GitHub Desktop.
Save vtellier/9acb579f81e1a817e182122e8ac2a995 to your computer and use it in GitHub Desktop.
A simple (and not perfect) AWS lambda function to work around the ignored `Access-Control-Allow-Origin: *` wildcard in Google Chrome.
exports.handler = (event, context, callback) => {
// Checking properties case insensitively, might be a better solution but this one works
// => https://stackoverflow.com/a/5833423/519376
Object.prototype.hasOwnPropertyCI = function(prop) {
return Object.keys(this)
.filter(function (v) {
return v.toLowerCase() === prop.toLowerCase();
}).length > 0;
};
Object.prototype.getPropertyCI = function(prop) {
return this[Object.keys(this)
.filter(function (v) {
return v.toLowerCase() === prop.toLowerCase();
})[0]]; // Be carefull here!
};
var headers = {};
if(event.headers.hasOwnPropertyCI("access-control-request-headers"))
headers["Access-Control-Allow-Headers"] = event.headers.getPropertyCI('access-control-request-headers');
if(event.headers.hasOwnPropertyCI("access-control-request-method"))
headers["Access-Control-Allow-Methods"] = event.headers.getPropertyCI('access-control-request-method');
if(event.headers.hasOwnPropertyCI("origin"))
headers["Access-Control-Allow-Origin"] = event.headers.getPropertyCI('origin');
//console.log(headers);
var response = {
statusCode: 204,
headers: headers
};
callback(null, response);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment