Cleanup and fix req.server_port; no longer reports socket port if any forwards headers are used.
This commit is contained in:
parent
b896454135
commit
1838f43eff
@ -389,19 +389,20 @@ class Request(dict):
|
||||
def server_port(self):
|
||||
"""
|
||||
Attempt to get the server's port in this order:
|
||||
`x-forwarded-port` header, :func:`Request.host`, actual port used by
|
||||
the transport layer socket.
|
||||
`forwarded` header, `x-forwarded-port` header, :func:`Request.host`,
|
||||
actual port used by the transport layer socket.
|
||||
:return: server port
|
||||
:rtype: int
|
||||
"""
|
||||
if self.forwarded:
|
||||
forwarded_port = self.forwarded.get("port") or (
|
||||
self.host.split(":")[1] if ":" in self.host else None
|
||||
"80" if self.scheme in ("http", "ws") else "443"
|
||||
)
|
||||
if forwarded_port:
|
||||
return int(forwarded_port)
|
||||
elif ":" in self.host:
|
||||
forwarded_port = self.host.split(":")[1]
|
||||
else:
|
||||
_, port = self.transport.get_extra_info("sockname")
|
||||
return port
|
||||
return self.transport.get_extra_info("sockname")[1]
|
||||
return int(forwarded_port)
|
||||
|
||||
@property
|
||||
def remote_addr(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user