Проблема 'Access-Control-Allow-Origin', даже если я правильно настроил settings.py?

Разработчик-любитель здесь. Пытаюсь следовать этому руководству , где в settings.py у меня есть

CORS_ALLOWED_ORIGINS = ['http://localhost:8080']

как на видео.

Однако, когда я пытаюсь получить доступ к серверу с моего front-end, я получаю ошибку

Доступ к XMLHttpRequest по адресу 'http://127.0.0.1:8000/engine' от источника 'http://localhost:8080' был заблокирован политикой CORS: На запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'.

Оцените, что на SO есть много подобных сообщений, но я не мог понять, почему у меня возникает эта проблема, а у парня, который создал учебник, нет. Вот остальная часть моего кода:

models.py

from django.db import models
from django.utils import timezone
import datetime

class Engine(models.Model):
    date = models.DateField(default=datetime.datetime(2024,1,1))

serializers.py

from rest_framework import serializers

from .models import Engine

class EngineSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Engine
        fields = ('id', 'date')

views.py

from django.shortcuts import render

from .models import Engine
from .serializers import EngineSerializer

from rest_framework import viewsets
from rest_framework.authentication import BasicAuthentication
from rest_framework.permissions import IsAuthenticated

class EngineViewSet(viewsets.ModelViewSet):
    authentication_classes = (BasicAuthentication,)
    permission_classes = (IsAuthenticated,)
    queryset = Engine.objects.all()
    serializer_class = EngineSerializer

urls.py

from django.contrib import admin
from django.urls import path, include

from backend_app.views import EngineViewSet

from rest_framework import routers

router = routers.DefaultRouter()
router.register('engine', EngineViewSet)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(router.urls))
]

'http://localhost:8080' и 'http://127.0.0.1:8080' - это не одно и то же. Они могут указывать на совершенно одинаковый код и функции, но они отличаются по таким вопросам.

Поместите оба варианта в список:

CORS_ALLOWED_ORIGINS = ['http://localhost:8080', 'http://127.0.0.1:8000']

Я не уверен насчет портов, однако.

Дополнительную помощь можно найти ЗДЕСЬ.

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