Получение ошибки CORS во фронтенде с бэкендом Django

Из моего фронтенда http://127.0.0.1:5500/index.html я вызываю Django REST POST API http://127.0.0.1:8000/api. Я установил django-cors-headers и мои фронтенд image_upload.js, бэкенд settings.py, и views.py, уровень проекта urls.py и уровень приложения urls.py следующие, API работает в postman, но я получаю CORS ошибку в консоли chromes,

Chrome console

enter image description here

Django console

enter image description here

image_upload.js

const image_input = document.querySelector("#image_input");
const display_image = document.querySelector("#display-image");
image_input.addEventListener("change", (event) => {
  console.log(event.target.files[0]);
  // console.log(URL.createObjectURL(event.target.files[0]));
  display_image.src = URL.createObjectURL(event.target.files[0]);

  const url = "http://127.0.0.1:8000/api";
  const data = event.target.files[0];

  axios
    .post(url, JSON.stringify(data), {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Access-Control-Allow-Origin": "*",
      },
    })
    .then(function (response) {
      console.log(response);
    })
    .catch(function (error) {
      console.log(error);
    });
});

settings.py

views.py

from email import message
from tkinter import image_names
from django.shortcuts import render
from django.http.response import JsonResponse
from rest_framework.parsers import JSONParser
from rest_framework import status
from rest_framework.decorators import api_view

from tensorflow.keras.models import load_model
import urllib.request

# Create your views here.

@api_view(['GET', 'POST'])
def PostRequests(request):
  print(request.body)
  # ing_url = ''
  # img_name = "tumor_image.jpg"
  # img = urllib.request.urlretrieve(img_url,img_name)
  # print(img)
  # loaded_model = load_model("vgg16_model_with_90_acc.h5")
  return JsonResponse({'message': "It Worked!"}, safe=False)

Уровень проекта urls.py

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

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

Уровень приложения urls.py

from django.urls import path


from apis import views


urlpatterns = [
  path('', views.PostRequests),
]

в вашем файле settings.py вы должны преобразовать это

CORS_ORIGIN_WHITELIST = [
'http://127.0.0.1:5500'
]

к этому :

CORS_ALLOWED_ORIGINS=[
      "http://127.0.0.1:5500"
 ]

 

Измените CORS_ORIGIN_ALLOW_ALL: True на CORS_ALLOW_ALL_ORIGINS=True. Это может быть одной из проблем.

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