Skip to content

Instantly share code, notes, and snippets.

@DanielG
Created April 2, 2011 22:39
Show Gist options
  • Save DanielG/899973 to your computer and use it in GitHub Desktop.
Save DanielG/899973 to your computer and use it in GitHub Desktop.
cors proxy in nodejs
var http = require('http');
var connect = require('connect');
var httpProxy = require('http-proxy');
var proxy = module.exports = function(options){
return function (req, res) {
var proxy = new httpProxy.HttpProxy(req, res);
var headerFields = null;
if(req.method === 'OPTIONS') {
/* CORS Preflight request */
if(!req.headers.origin) {
fail;
}
if(!req.headers['access-control-request-method']) {
fail;
}
req.headers['access-control-allow-origin'] = req.headers.origin;
req.headers['access-control-allow-credentials'] = 'true';
req.headers['access-control-allow-methods'] = req.method;
req.headers['access-control-allow-headers'] =
req.headers['access-control-request-headers']
} else {
req.headers['Access-Control-Allow-Origin'] = '*';
req.headers['Access-Control-Allow-Methods'] =
'GET, OPTIONS, HEAD, POST, PUT, DELETE';
req.headers['Access-Control-Allow-Headers'] =
'X-Requested-With';
}
// Put your custom server logic here, then proxy
proxy.proxyRequest(options.port, 'localhost', req, res);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment