Итак, я настроил свой проект с использованием заголовков CORS для приема запросов со всех доменов. Однако я хочу отфильтровать запросы в представлениях, используя предоставленные пользователем данные. Позвольте мне объяснить: каждый пользователь может создавать проекты, и у этих проектов есть поле с именем whitelisted_domain
, которое устанавливается пользователем. Когда запрос попадает в один из этих проектов, я хочу убедиться, что запрос поступил из домена из белого списка. Например:
class CreateTask(APIView):
def post(self, request, project_id, format=None):
project = Project.objects.get(id=project_id)
# Here, I want to check if the two domains match or not
if project.whitelisted_domain == request.META['REMOTE_HOST']:
# Create task
else:
# Raise authentication error
Проблема в том, что когда я проверяю свое представление с помощью таких служб, как Postman или Reqbin, метаэлемент пуст. Есть ли способ безопасного сопоставления домена запроса и домена, заданного пользователем в представлении? Если нет, как я могу защитить конечную точку? Заголовок секретного ключа является опцией, но что делать, если запросы поступают из пользовательского интерфейса, где в принципе невозможно скрыть учетные данные.