CORS блокирует соединение между Flutter и Django API
Я хочу соединить Djnago API с приложением flutter, но у меня много проблем.
Я покажу код как flutter, так и django.
Settings.py
home.dart
Я хочу использовать API в http://localhost:8000/api/buildingdata/
Но когда я подключаюсь к API, возникает эта ошибка, хотя я использую опции CORS в Django.
Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/buildingdata/' from origin 'http://localhost:62272' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.
127.0.0.1:8000/api/buildingdata/:1
Failed to load resource: net::ERR_FAILED # Chrome
[29/Oct/2021 23:29:43] "OPTIONS /api/buildingdata/ HTTP/1.1" 200 0
[29/Oct/2021 23:29:47,219] - Broken pipe from ('127.0.0.1', 62961)# After closing app
Я также пытался изменить порт (8000 > 8080), но ничего не изменилось.
Я не могу использовать белый список, потому что порт всегда меняется при каждом запуске приложения flutter.
Я думаю, что перепробовал все, что мог, но все еще не могу исправить код. (Изменение для удаления некоторых опций CORS в django, отключение chrome cors, удаление flutter_tools.stamp и добавление disable web security в chrome.dart и так далее)
Что нужно сделать, чтобы исправить CORS?
Или развертывание является единственным способом использования API?
Что блокирует ваши конечные точки API от потребления вашим Frontend APP, это не Django, это, скорее всего, ваш сервер, а не Django, вы настроили ваш Django Backend, чтобы позволить всем потреблять ваши API, что вы не должны делать в production, если только вы не уверены в том, что вы делаете.
Что блокирует ваши конечные точки, так это ваш сервер, например Nginx. Попробуйте настроить конфигурационный файл так, чтобы разрешить внешнему приложению использовать ваши конечные точки. Обратите внимание, что даже если API не блокируются на postman и других инструментах тестирования API, вы должны настроить конфигурационный файл, чтобы иметь возможность использовать его в вашем Frontend APP