Mostra notizie nelle discussioni
  • Avatar
    ☺
    Scritto da
    ::1
    il 2013-11-10 21:34:18.0 alle 2013-11-10 21:34:18.0
    Trollate totali: 12321
    [nodejs] @altg: aggiungere un header a tutte le response
    Ho scritto questa cosina stasera, magari ti serve:
    var http = require('http');
    
    var writeHead = http.ServerResponse.prototype.writeHead;
    http.ServerResponse.prototype.writeHead = function() {
      // response.writeHead(statusCode, [reasonPhrase], [headers])
      var headers =
        arguments[1] && typeof arguments[1] === 'object'
          ? arguments[1]
          : arguments[2] && typeof arguments[2] === 'object'
            ? arguments[2]
            : null;
      if (headers) {
        headers['Server'] = 'proott';
        writeHead.apply(this, arguments);
      } else {
        headers = {};
        headers['Server'] = 'proott';
        writeHead.apply(this, Array.prototype.slice.call(arguments).concat([headers]));
      }
      this.writeHeadWasCalled = true;
    }
    
    var end = http.ServerResponse.prototype.end;
    http.ServerResponse.prototype.end = function() {
      // response.end([data], [encoding])
      if (!this.writeHeadWasCalled) {
        this.writeHead(200, {'Server' : 'proott'});
      }
      end.apply(this, arguments);
    }
    
    var server = http.createServer(function(req, res) {
      if (req.url === '/writeHeadWithHeaders') {
        res.writeHead(200, {'Content-Type' : 'text/plain'});
      } else if (req.url === '/writeHeadWithoutHeaders') {
        res.writeHead(200);
      }
      res.end('ok')
    });
    
    server.listen(8080);
    


    I test:
    $ echo -n 'GET / HTTP/1.0\r\n\r\n' | nc localhost 8080
    HTTP/1.1 200 OK
    Server: proott
    Date: Sun, 10 Nov 2013 20:32:11 GMT
    Connection: close
    
    ok
    $ echo -n 'GET /writeHeadWithHeaders HTTP/1.0\r\n\r\n' | nc localhost 8080
    HTTP/1.1 200 OK
    Content-Type: text/plain
    Server: proott
    Date: Sun, 10 Nov 2013 20:32:48 GMT
    Connection: close
    
    ok
    $ echo -n 'GET /writeHeadWithoutHeaders HTTP/1.0\r\n\r\n' | nc localhost 8080
    HTTP/1.1 200 OK
    Server: proott
    Date: Sun, 10 Nov 2013 20:33:11 GMT
    Connection: close
    
    ok
    
    Young professional woman and busy mom.
    • Avatar
      ☺
      Scritto da
      altg
      utente che non utiene
      il 2013-11-10 22:08:51.0 alle 2013-11-10 22:08:51.0
      Trollate totali: 11540
      Re: [nodejs] @altg: aggiungere un header a tutte le response
      Be', io personalmente avevo passato tutte le responses da una stessa funzione, quindi se voglio aggiungere un header modifico quella, comunque mi appunto da dove si passa per accedere al livello inferiore (http.ServerResponse.prototype.writeHead).

      Comunque, sai mica se nodejs e` in qualche modo legato a Google, dato l'uso del V8? Cioe`, intendo se Google in qualche modo puo` controllarlo, perche` come avrai notato, di recente avrebbe rotto le scatole a parecchia gente incluso me, Google.
      • Avatar
        ☺
        Scritto da
        ::1
        il 2013-11-10 22:19:50.0 alle 2013-11-10 22:19:50.0
        Trollate totali: 12321
        Re: [nodejs] @altg: aggiungere un header a tutte le response
        Scritto da: altg
        > Be', io personalmente avevo passato tutte le responses da una stessa funzione, quindi se voglio aggiungere un header modifico quella, comunque mi appunto da dove si passa per accedere al livello inferiore (http.ServerResponse.prototype.writeHead).
        >
        > Comunque, sai mica se nodejs e` in qualche modo legato a Google, dato l'uso del V8? Cioe`, intendo se Google in qualche modo puo` controllarlo, perche` come avrai notato, di recente avrebbe rotto le scatole a parecchia gente incluso me, Google.

        No, google controlla v8, ed eventuali sviluppi futuri (es: cambio di licenza) potrebbero vedere freezato il runtime javascript, ma non le aggiunte fatte da Ryan Dahl prima e Joyent poi al progetto: le librerie http, io e compagnia insomma sono fuori da v8.
        Nel caso peggiore non avresti gli sviluppi che ci sono in corso per la sintassi EcmaScript 6 e tutte le belle ottimizzazioni che fa sul bytecode e sulle regex (irregexp), il tool di debug step-by-step integrato in chrome etc. etc. non avrebbero ulteriori progressi.
        Ma già allo stato attuale è comunque un livello eccellente.
        Chi ha investito invece molto denaro in node.js è microsoft, per la piattaforma Azure; sono loro che hanno spinto per migrare da libev a libuv per avere node.js su windows.
        Young professional woman and busy mom.
        • Avatar
          ☺
          Scritto da
          altg
          utente che non utiene
          il 2013-11-10 22:32:50.0 alle 2013-11-10 22:32:50.0
          Trollate totali: 11540
          Re: [nodejs] @altg: aggiungere un header a tutte le response
          > > Be', io personalmente avevo passato tutte le responses da una stessa funzione, quindi se voglio aggiungere un header modifico quella, comunque mi appunto da dove si passa per accedere al livello inferiore (http.ServerResponse.prototype.writeHead).
          > >
          > > Comunque, sai mica se nodejs e` in qualche modo legato a Google, dato l'uso del V8? Cioe`, intendo se Google in qualche modo puo` controllarlo, perche` come avrai notato, di recente avrebbe rotto le scatole a parecchia gente incluso me, Google.
          >
          > No, google controlla v8, ed eventuali sviluppi futuri (es: cambio di licenza) potrebbero vedere freezato il runtime javascript, ma non le aggiunte fatte da Ryan Dahl prima e Joyent poi al progetto: le librerie http, io e compagnia insomma sono fuori da v8.
          > Nel caso peggiore non avresti gli sviluppi che ci sono in corso per la sintassi EcmaScript 6 e tutte le belle ottimizzazioni che fa sul bytecode e sulle regex (irregexp), il tool di debug step-by-step integrato in chrome etc. etc. non avrebbero ulteriori progressi.
          > Ma già allo stato attuale è comunque un livello eccellente.
          > Chi ha investito invece molto denaro in node.js è microsoft, per la piattaforma Azure; sono loro che hanno spinto per migrare da libev a libuv per avere node.js su windows.

          Meno male. Sarebbe stato condizionante nella mia volonta` di usare il nodo per sostituire il LAMP stack col mio serverino allinone. Comunque, spero ancora che Google faccia marcia indietro. Spero vedano cosa gli sta succedendo e non sottovalutino l'enormita` della mobilitazione. Con l'ultima mossa, secondo me, stanno regalando gli utenti di youtube a Vimeo.

<softv>

Pagina generata in 273 millisecondi

Utenti attivi: 11 nell'ultimo minuto, 29 negli ultimi cinque minuti, 54 negli ultimi 15 minuti