我正在开发一个 DRF(Django 项目),其中我的后端 django Rest api 托管在服务器上,我的 ReactJS 前端也托管在同一台服务器上。我已确保遵循我在 ff 文档中读到的所有所需步骤:
我添加了 corsheaders INSTALLED_APPS ,并且 settings.py 中的中间件是:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Run Code Online (Sandbox Code Playgroud)
我在settings.py中的CORS设置是:
CORS_ALLOW_ALL_ORIGINS=False
CSRF_TRUSTED_ORIGINS = [
"https://samplefrontend.tech",
]
CORS_ALLOW_METHODS = [
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
]
CORS_ALLOW_HEADERS = [
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用 Postman 从本地 PC(而不是前端服务器)执行一些请求(例如获取令牌)时,其余 api 返回刷新和访问令牌。对于其他 HTTP 请求也是如此,我可以使用 postman 自由地执行这些请求并获得响应。
我需要的是只接受来自前端应用程序(reactjs)的请求。谁可以帮我这个事?