|
|
/** * Module dependencies. */
var Polling = require('./polling'); var util = require('util');
/** * Module exports. */
module.exports = XHR;
/** * Ajax polling transport. * * @api public */
function XHR (req) { Polling.call(this, req); }
/** * Inherits from Polling. */
util.inherits(XHR, Polling);
/** * Overrides `onRequest` to handle `OPTIONS`.. * * @param {http.IncomingMessage} * @api private */
XHR.prototype.onRequest = function (req) { if ('OPTIONS' === req.method) { var res = req.res; var headers = this.headers(req); headers['Access-Control-Allow-Headers'] = 'Content-Type'; res.writeHead(200, headers); res.end(); } else { Polling.prototype.onRequest.call(this, req); } };
/** * Returns headers for a response. * * @param {http.IncomingMessage} request * @param {Object} extra headers * @api private */
XHR.prototype.headers = function (req, headers) { headers = headers || {};
if (req.headers.origin) { headers['Access-Control-Allow-Credentials'] = 'true'; headers['Access-Control-Allow-Origin'] = req.headers.origin; } else { headers['Access-Control-Allow-Origin'] = '*'; }
return Polling.prototype.headers.call(this, req, headers); };
|