arnaucube
arnaucube/socketioMEANseedPublic Self-hosted repository
socketioMEANseed/server/node_modules/engine.io/lib/transports/polling-xhr.js
server/node_modules/engine.io/lib/transports/polling-xhr.jsRaw
 1
 2/**
 3 * Module dependencies.
 4 */
 5
 6var Polling = require('./polling');
 7var util = require('util');
 8
 9/**
10 * Module exports.
11 */
12
13module.exports = XHR;
14
15/**
16 * Ajax polling transport.
17 *
18 * @api public
19 */
20
21function XHR (req) {
22  Polling.call(this, req);
23}
24
25/**
26 * Inherits from Polling.
27 */
28
29util.inherits(XHR, Polling);
30
31/**
32 * Overrides `onRequest` to handle `OPTIONS`..
33 *
34 * @param {http.IncomingMessage}
35 * @api private
36 */
37
38XHR.prototype.onRequest = function (req) {
39  if ('OPTIONS' === req.method) {
40    var res = req.res;
41    var headers = this.headers(req);
42    headers['Access-Control-Allow-Headers'] = 'Content-Type';
43    res.writeHead(200, headers);
44    res.end();
45  } else {
46    Polling.prototype.onRequest.call(this, req);
47  }
48};
49
50/**
51 * Returns headers for a response.
52 *
53 * @param {http.IncomingMessage} request
54 * @param {Object} extra headers
55 * @api private
56 */
57
58XHR.prototype.headers = function (req, headers) {
59  headers = headers || {};
60
61  if (req.headers.origin) {
62    headers['Access-Control-Allow-Credentials'] = 'true';
63    headers['Access-Control-Allow-Origin'] = req.headers.origin;
64  } else {
65    headers['Access-Control-Allow-Origin'] = '*';
66  }
67
68  return Polling.prototype.headers.call(this, req, headers);
69};