簡體   English   中英

flask-cors Control-Allow-Origin'

[英]flask-cors Control-Allow-Origin'

嘗試在結合Python和django的本地服務器上執行簡單的json請求。

我的apiview.py

from rest_framework import generics
from django.shortcuts import get_object_or_404
from .jsonserializer import GroupSerializer, SubgroupSerializer, ProductsSerializer
from .models import pGroups, pSubgroups, Products
from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route("/Group/")
# @cross_origin()

# Create your views here.

class GroupList(generics.ListCreateAPIView):
    queryset = pGroups.objects.all()
    serializer_class = GroupSerializer

jQuery腳本

let dropdown = $('#locality-dropdown');

dropdown.empty();

dropdown.append('<option selected="true" disabled>Choose product group</option>');
dropdown.prop('selectedIndex', 0);

const url = 'http://127.0.0.1:8000/Group/';

// Populate dropdown with list of provinces
$.getJSON(url, function (data) {
  $.each(data, function (key, entry) {
    console.log(entry.name);
    dropdown.append($('<option></option>').attr('value', entry.abbreviation).text(entry.name));
  })
});

畢竟我登錄控制台smthng像:

無法加載http://127.0.0.1:8000/Group/ :請求的資源上沒有“ Access-Control-Allow-Origin”標頭。 因此,不允許訪問原始“空”。

我正在嘗試的是: Flas cors,但我似乎在apiview.py中缺少某些內容。

PS我是網絡方面的完整初學者。 編輯:與郵遞員我得到答復

[
    {
        "id": 1,
        "group_chiper": "01",
        "group_shortcut": "DRN",
        "group_name": "Drink",
        "operator": 2
    },
    {
        "id": 2,
        "group_chiper": "02",
        "group_shortcut": "ML",
        "group_name": "Meals",
        "operator": 1
    }
]

根據羅賓評論:

django-cors-header是其中一種方法。

使用命令行將其安裝到您的根項目:

pip install django-cors-headers

如果您正在使用環境,則可以將其安裝到根項目文件夾並重置環境。

將已安裝的應用添加到您的

settings.py

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

MIDDLEWARE = [  # Or MIDDLEWARE_CLASSES on Django < 1.10
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

CorsMiddleware應該放置在盡可能高的位置,尤其是在可以生成響應的任何中間件之前,例如Django的CommonMiddleware或Whitenoise的WhiteNoiseMiddleware。 如果不是以前,它將無法將CORS標頭添加到這些響應中。

我缺少的部分是添加settings.py

代碼行

CORS_ORIGIN_ALLOW_ALL = True

暫無
暫無

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

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