gpt4 book ai didi

python - 在 Django-Rest-Framework 中获取 REMOTE_ADDR?

转载 作者:行者123 更新时间:2023-11-28 21:02:15 31 4
gpt4 key购买 nike

如何获取请求的remote_addr?

我有一个 BileModelListAPIView 如下:

class BileModelListAPIView(ListAPIView):
serializer_class = BModelSerializer
permission_classes = []
queryset = BileModel.objects.all()

def get(self, request):

print(request) # there I debug the point
return Response(data="ok", status=HTTP_200_OK)

enter image description here

我读到一篇文章说 HttpRequest 有一个 META 属性,在 META 中有 REMOTE_ADDR。

但在我的场景中,我怎样才能获得 REMOTE_ADDR?

最佳答案

您还没有说为什么需要它,但是如果您想获取客户端的 IP,那么 Remote-Address 是不可靠的。如果用户在代理后面或者您的服务器在反向代理后面,它将返回服务器 IP。

X-Forwarded-For 是获取客户端 IP 的更可靠方法。如果客户端和您的网络服务器之间存在多个代理,它将返回多个 IP 地址。

X-Forwarded-For 也包含在 META 属性中,但有时服务器未配置为包含 X-Forwarded-For header 。在这种情况下,您只剩下 Remote-Address

代码:

x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')

如果 X-Forwarded-For header 不可用,此代码将从 X-Forwarded-For 或 Remote-Address 中的第一个 IP 获取 IP。

关于python - 在 Django-Rest-Framework 中获取 REMOTE_ADDR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48222798/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com