【问题标题】:Proxying without redirecting node-http-proxy代理而不重定向 node-http-proxy
【发布时间】:2012-05-07 22:58:25
【问题描述】:

我正在尝试使用 node-http-proxy 将我的站点代理到另一个站点,例如 google.com 每当我尝试他们在 github 上的文档中提供的一些示例而不是我的网站显示 google.com 的内容时,它只会重定向到 google.com 这是我正在使用的代码

var proxy = require("http-proxy");
var options = {
   router: {
      "myserver.com" : "google.com"
   }
}
var proxyServer = proxy.createServer(options);
proxyServer.listen(80);

我做错了,它只是为了反向代理?如果它是 node-http-proxy 中的什么允许我做常规代理?

【问题讨论】:

    标签: node.js proxy node-http-proxy


    【解决方案1】:

    因为 google.com 返回 301 重定向,它会将浏览器发送到其他位置。在这种情况下,您可以只使用完整的 url (www.google.com),它不会将 301 重定向发送回 www.google.com。重要的是,由于 google.com 正在发回 301 重定向,因此您必须使用重定向的网站来不重定向客户端。例如,如果您运行 curl google.com,您将看到 301 重定向,而如果您只运行 curl www.google.com,则重定向不存在。

    【讨论】:

    • 我测试了你的方法,没有任何效果
    【解决方案2】:

    尝试 CodeRarity 的回答给了我:

    > curl www.google.com    
    <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">  
    <TITLE>302 Moved</TITLE></HEAD><BODY>                                           
    <H1>302 Moved</H1>                                                              
    The document has moved                                                          
    <A HREF="http://www.google.co.uk/">here</A>.                                    
    </BODY></HTML> 
    >
    

    如您所见,即使使用 www.google.com,您仍可能会收到重定向,具体取决于您所在的位置。

    为什么不尝试其他不那么聪明的网站呢?

    【讨论】:

    • 好吧,当我使用代理时,如果我尝试另一个 url,我会检查标头,并且代理器会对外部 url 进行 301 重定向。它不应该只是加载页面吗?
    • 嗯,我自己还是不太相信 http-proxy。它作为代理非常不成熟(例如,您似乎无法将代理表与 https 一起使用)。如果它正在执行重定向,您可能必须实现自己的“getter”,Node 可以通过内置请求库轻松完成。
    猜你喜欢
    • 2013-09-14
    • 2013-02-28
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2014-01-03
    • 2019-07-02
    相关资源
    最近更新 更多