Как получить IP-адрес сервера, на котором находится предоставленный мною iframe?

У меня есть приложение django, это приложение содержит форму, и у меня есть другой сервер, на котором работает php. На сервере PHP я создал html-шаблон, который включает форму в виде iframe с моего сервера Django.

Когда я пытался получить IP-адрес PHP-сервера, Django возвращает мне IP-адрес клиента. Но я хочу получить IP-адрес сервера. Может ли кто-нибудь помочь мне? Я поделился кодами middleware, которые я использую для получения IP-адреса сервера, ниже.

from django.http import HttpResponseForbidden
import time


class IframeHostMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        allowed_hosts = [
            '172.16.3.55',
            '111.111.111.111',
            'localhost',
        ]

        headers_order = [
            'HTTP_X_REAL_IP',  # Standard header for the real IP
            'HTTP_X_FORWARDED_FOR',  # Forwarded IP (could be a list)
            'HTTP_X_CLIENT_IP',  # Alternate header for client IP
            'HTTP_CF_CONNECTING_IP',  # Cloudflare header for client IP
            'HTTP_X_CLUSTER_CLIENT_IP',  # Other standard header for client IP
            'HTTP_FORWARDED',  # Standard forwarded header (RFC 7239)
            'REMOTE_ADDR',  # Fall back to the web server's connection
        ]

        ip = None
        for header in headers_order:
            value = request.META.get(header)
            if value:
                # If it's the X-Forwarded-For header, it could contain multiple IPs
                if header == 'HTTP_X_FORWARDED_FOR':
                    value = value.split(',')[0]
                ip = value.strip()
                break

        referer = request.META.get('HTTP_X_FORWARDED_FOR')
        client = request.META.get('REMOTE_ADDR')
        print(f"Iframe Requested from (IP): {ip}")

        if not ip or not any(ip.startswith(host) for host in allowed_hosts):
            print("Iframe Status: Deny")
            return HttpResponseForbidden('Access denied')

        print("Iframe Status: Accept")
        return self.get_response(request)

Вернуться на верх