我有一个iOS应用程序,它调用我在heroku上托管的python服务器。
我可以在服务器上观察到,当我形成NSURLRequest
时,X-Forwarded-For
标头包含在传入请求中。
但是,在iOS应用中,日志记录request.allHTTPHeaderFields
仅显示我明确添加到请求中的标头。它不包含X-Forwarded-For
标题。
有人知道iOS是在发送请求之前附加此标头,还是由我的ISP提供商或heroku附加,或者它是黑魔法?
从日志记录/调试的角度来看,我可以假设与X-Forwarded-For
标题关联的IP地址代表唯一用户吗?如果没有,我应该如何解释该IP地址?
注意 - 我不是试图将此标题中的值用于除调试之外的任何其他内容,我已经阅读了尝试使用它进行身份验证等的一些风险。
答案 0 :(得分:1)
这个标题不是由iOS发送的,它是由Heroku添加的,还有一些other headers
一般情况下,如果请求被代理(link),则由Web服务器添加。
在简单的情况下,X-forwarded-for
将包含客户端公共IP地址。
如果请求在到达Heroku之前被代理,则X-forwarded-for
将包含以逗号分隔的列表,第一个元素将是客户端公共IP地址,下一个项目是代理公共IP地址。