0

我正在使用 Passport-google 登录用户example.com:3000。它工作得很好。但是,如果我将 Node.js 服务器放在代理(IIS7;不要问为什么,我必须这样做)之后,并在example.com(而不是example.com:3000)中访问我的网站,我就无法使用 Passport-google 登录。我在 IIS 中的 RewriteRule:

Pattern (.*) 
{HTTP_HOST} Matches myserver.com
{SERVER_PORT} Does not match 3000
Rewrite URL: http://127.0.0.1:3000/{R:1}

我得到的错误:

Cannot GET /accounts/o8/ud?

我对 Passport-twitter 和 Passport-facebook 也有同样的问题。

我想我应该在 IIS 中设置一些其他规则,或者在 Passport.js 或 OpenID 中设置一些代理设置,但还没有弄清楚。有任何想法吗?

4

1 回答 1

1

IIS 代理配置错误。在应用程序请求路由(ARR)/服务器代理设置Reverse rewrite host in response headers下已打开,因此当护照发送 302 时,将标头中的位置设置为https://www.google.com/accounts/o8/...IIS 代理将其替换为http://myserver.com/accounts/o8/.... 这当然是一个无效的链接。

于 2013-03-29T09:07:29.897 回答