美文网首页
request.remote_addr是错误的,并且没有显示真正

request.remote_addr是错误的,并且没有显示真正

作者: 空口言_1d2e | 来源:发表于2019-12-12 18:37 被阅读0次

    部署了一个Flask应用程序,我注意到request.remote_addr总是127.0.0.1
    问题是在Flask前面可能有某种代理。在这种情况下,“真正的”IP地址通常可以在request.headers['X-Forwarded-For']中找到

     ip = request.headers.getlist("X-Forwarded-For")[0]
    

    什么是remote_addr

    remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP。

    什么是x_forwarded_for

    正如上面所述,当你使用了代理时,web服务器就不知道你的真实IP了,为了避免这个情况,代理服务器通常会增加一个叫做x_forwarded_for的头信息,把连接它的客户端IP(即你的上网机器IP)加到这个头信息里,这样就能保证网站的web服务器能获取到真实IP


    image.png

    相关文章

      网友评论

          本文标题:request.remote_addr是错误的,并且没有显示真正

          本文链接:https://www.haomeiwen.com/subject/yvwtnctx.html