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};