http-party / http-server

a simple zero-configuration command-line http server
MIT License
13.42k stars 1.48k forks source link

Cannot override changeOrigin proxy option #831

Open JensOlesen47 opened 1 year ago

JensOlesen47 commented 1 year ago

I am attempting to authenticate to a web application using SSO. The apache web server runs on localhost:8080, while the http-server runs on localhost:8443. The problem I'm experiencing is that http-server will rewrite the host header as localhost:8080. As a result, I can authenticate with the SSO server successfully, but I am redirected back to my web server at localhost:8080.

I expected to solve this problem by setting the changeOrigin option to false, but it isn't working as I'd expect it to work.

Environment Versions

  1. OS: Ubuntu 18
  2. Node version: 14.17.2
  3. http-server version: 14.1.1

Steps to reproduce

Run http-server with --proxy-options.changeOrigin false.

Expected result

The changeOrigin flag is true by default, but can be overridden with the above option.

Actual result

The changeOrigin flag is always set to true and the option is ignored. See lib/http-server.js:

proxy.web(req, res, {
        target: options.proxy,
        changeOrigin: true
}

Other information

I will open a PR if this behaviour is deemed to be a bug.

github-actions[bot] commented 1 year ago

This issue has been inactive for 180 days

tingram-hp commented 4 months ago

I am having the same issue. Is this line the problem?

https://github.com/http-party/http-server/blob/8f7fcb08003952ec300874559690d0d75d241ffa/lib/http-server.js#L148

It seems to be overriding changeOrigin to true after our proxyOptions have been applied.

JensOlesen47 commented 4 months ago

Yep @tingram-hp that's the problem, I forked this repo to fix it, see https://github.com/Stack8/http-server and https://www.npmjs.com/package/s8-http-server

Note, I won't be maintaining that fork, but I don't think this repo is being maintained either.