Как сделать так, чтобы мой 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" ]