Skip to content

Unable to set cookies / write headers from proxy #445

Open
@robertjchristian

Description

@robertjchristian

I am trying to write a header on the response object from within the proxy:

// dependencies
var httpProxy = require('./lib/node-http-proxy'),
    http = require('http');

// 
// Setup proxy server on 8000
//

var server = httpProxy.createServer(function (req, res, proxy) {

  // fetch cookies
  var cookies = {};
  req.headers.cookie && req.headers.cookie.split(';').forEach(function( cookie ) {
    var parts = cookie.split('=');
    cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '' ).trim();
  });
  
  console.log(cookies);

  // write session cookie
  res.writeHead(200, {
    'Set-Cookie': 'token=12345678'    
  });

  // proxy requests to localhost:9000
  proxy.proxyRequest(req, res, {
    host: 'localhost',
    port: 9000,
  });

});
server.listen(8000);



//
// Dummy target server on port 9000 (echo request)
//
http.createServer(function (req, res) {
 
 res.write('Echo service: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
  
  res.end();
  
}).listen(9000);

And http fails with "Cannot write header/s after they have been written." Reverse proxy documentation says nothing about setting cookies. What am I doing wrong?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions