簡體   English   中英

即使我正確設置了 settings.py,也會出現“Access-Control-Allow-Origin”問題?

[英]'Access-Control-Allow-Origin' issue even though I've set up the settings.py correctly?

業余開發者在這里。 嘗試按照本教程進行操作,我在 settings.py 中的位置

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

根據視頻。

但是,當我嘗試從前端訪問服務器時,出現錯誤

CORS 策略阻止了來自“http://127.0.0.1:8000/engine”的 XMLHttpRequest 策略:沒有“Access-Control-Allow-Origin”header請求的資源。

感謝 SO 上有很多類似的帖子,但我不明白為什么我會遇到這個問題,而制作教程的人卻沒有。 這是我的代碼的 rest:

模型.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))

序列化程序.py

from rest_framework import serializers

from .models import Engine

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

視圖.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

網址.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']

不過,我不確定端口。

這里可以找到更多幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM