Как сделать так, чтобы мой Django API принимал только те запросы, которые приходят с самого сайта?

Мне нужно было создать API для моего Django-приложения для чего-то конфиденциального, что я не мог разместить в публичном и статичном Javascript-файле. Как я могу сделать так, чтобы это представление принимало запросы только с моего собственного сайта, и отклоняло любые запросы "извне" (если кто-то скопирует мой запрос ниже, он должен получить ошибку)?

Если есть какие-либо другие соображения безопасности, пожалуйста, укажите их в своем ответе. Мой сайт размещен на Heroku.

Запрос в моем файле javascript:

var clientSecret = await fetch('https://url.com/api/', {
    method: 'POST',
    body: params,
    headers: {
        'Content-Type': 'text/plain'
      },
}).then(r => r.json())

Мое представление для моего API (https://url.com/api/):

from rest_framework.request import Request as RESTRequest
from rest_framework.response import Response
from rest_framework.decorators import api_view
import requests

@api_view(['POST'])
def payment(request, *args, **kwargs):
    ... #define headers_in and params_in here
    response = requests.post('https://outboundapirequest.com/v1/request', 
            headers=headers_in,
            data=params_in)

    return Response(response.json()['value'])

Используя ''кросс-оригинальный обмен ресурсами (CORS)''

В настройках Django вы можете задать список всех доменов, с которых разрешено отправлять запросы к вашему API серверу.

Подобно этому

CORS_ALLOWED_ORIGINS = [ "http://localhost:8080", "http://127.0.0.1:9000" ]

Вот подробная ссылка о том, как его настроить

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