| /** | |
| * 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); | |
| }; | |