python - ¿ 为什么我在 django 中的 CORS 配置不起作用?
问题描述
我的 production.py 文件中有我的 REST API 设置。此 REST API 已上传到 Heroku,并django-cors-headers
与以下配置一起使用:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Third-Party apps
'rest_framework',
'rest_framework.authtoken',
'corsheaders',
'gunicorn',
# Local apps
'core',
'users',
'checkers',
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
]
CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = (
'myapi.herokuapp.com'
)
将 myapi.herokuapp.com 放入 CORS_ORIGIN_WHITELIST 的想法是查看发出请求localhost
是否被拒绝(这是正确的做法)。但是这是被接受的,这让我明白 CORS 运行不正常。
解决方案
在获取 django rest_api 之前,请确保您django-cors-headers
在后端进行了设置settings.py
。有关更多信息,请查看此链接。
pip install django-cors-headers
设置.py:
INSTALLED_APPS = [
...
'corsheaders',
...
]
MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1.10
...
'corsheaders.middleware.CorsMiddleware',
'corsheaders.middleware.CorsPostCsrfMiddleware',
...
]
CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = (
'your-server-IP-address'
)
CORS_ALLOW_METHODS = [
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
]
推荐阅读
- javascript - 如何删除html文本输入中文本之间的双空格
- ios - IOS 推送通知计数
- c# - 减去转换为 int 的字符串,然后返回字符串:
- mongodb - mongo 聚合中的 $push 和 $group
- c# - 每隔几秒在两个函数的执行之间切换
- laravel - Laravel 错误密码重置链接
- highcharts - 如何将 Highmap 图表与 Angular 5 应用程序集成?
- php - 在 laravel 中创建命令时如何避免重复的内容 file_put_contents
- c# - .NET Core Google Drive API 适用于 windows 但不适用于 linux
- powershell - PowerShell 表单 GUI - 对象