Кросс-запрос источника заблокирован Django -проект - PullRequest
0 голосов
/ 26 апреля 2020

Я создал REST API и следую этому уроку: https://www.youtube.com/watch?v=hISSGMafzvU&t=14s

Я закончил все до 13 минут. добавление скрипта JS в шаблон html. Когда я запускаю и проверяю консоль, я получаю: «Запрос на перекрестное происхождение заблокирован: та же политика происхождения запрещает чтение удаленного ресурса по адресу http://127.0.0.1: 8000 / api / task-list / . (Причина: CORS отсутствует заголовок «Access-Control-Allow-Origin». "

Я понятия не имею, в какую часть моих проектов входит заголовок CORS?

<script type="text/javascript">

        buildList()
        function buildList(){
            var wrapper = document.getElementById('list-wrapper')

            var url = 'http://127.0.0.1:8000/api/task-list/'

            fetch(url)
            .then((resp) => resp.json())
            .then(function(data){
                console.log('Data:', data)
            })
        }
</script>

1 Ответ

0 голосов
/ 26 апреля 2020

Вы должны добавить pip install django-cors-headers в ваше приложение Django и настроить его для разрешения запросов. А затем добавьте его в свои установленные приложения:

#settings.py

INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
]

Вам также потребуется добавить класс промежуточного программного обеспечения для прослушивания ответов:

#settings.py
MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

Просто разрешите всем источникам делать перекрестные HTTP-запросы сайта:

#/settings.py
CORS_ORIGIN_ALLOW_ALL = True

Примечание. Если вы находитесь в разработке, вы можете разрешить все CORS любого происхождения. Но не делай этого в производстве.

CORS_ORIGIN_ALLOW_ALL = False

CORS_ORIGIN_WHITELIST = (
    'https//:yourdomain',
)

Надеюсь, это поможет!

...