コード例 #1
0
ファイル: replay.js プロジェクト: h2non/rocky
function setRequestParams (req, opts) {
  const target = req.rocky.options.target || opts.target
  const url = parseUrl(target)
  const params = setupReq(opts.ssl || {}, opts, req)

  params.hostname = url.hostname
  params.port = url.port

  const forwardHost = opts.forwardHost
  if (typeof forwardHost === 'string') {
    params.headers.host = forwardHost
  } else if (forwardHost) {
    params.headers.host = url.host
  }

  if ((req.method === 'DELETE' || req.method === 'OPTIONS') && !req.headers['content-length']) {
    params.headers['content-length'] = '0'
  }

  if (opts.replayOriginalBody && req._originalBodyLength) {
    params.headers['content-length'] = req._originalBodyLength
  }

  return params
}
コード例 #2
0
  function cacheResolver(req) {

    var target = url.parse(options.proxy.target);
    var outgoing = setupOutgoing({},
      _.assign(options.proxy, {
        target: target
      }), req);

    outgoing = _.pick(outgoing, [
      // https://nodejs.org/docs/v4.4.2/api/url.html
      'protocol', 'slashes',
      'auth',
      'hostname',
      'host', 'port', 
      'path',
      'pathname',
      'query', 'search',
      'hash'
    ]);

    target = _.omit(target, [
      'path',
      'pathname'
    ]);

    // log('proxy target', target);
    // log('outgoing', outgoing);

    outgoing = _.defaults(outgoing, target, {
        protocol: outgoing.port === 80 ? 'http' : outgoing.port === 443 ? 'https' : undefined,
        pathname: outgoing.pathname ||  outgoing.path
    });

    // convert back into URL object
    outgoing = url.parse(url.format(outgoing));

    return _.get(outgoing, 'href');
  }