我正在从事一个DRF (Django项目),其中我的后端django rest托管在服务器上,我的ReactJS前端也托管在同一台服务器上。我确保按照我在ff文档中所读到的所有步骤:
我已经添加了corsheader 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',
]我在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',
]但是,当我尝试使用本地PC (而不是来自前端服务器)的Postman执行一些请求时,例如get令牌,rest返回刷新和访问令牌。对于其他HTTP请求,这也是正确的,我可以使用postman自由地执行这些请求并获得响应。
我需要的是只有来自前端应用程序(reactjs)的请求才能被接受。有人能帮我吗?
发布于 2022-04-19 02:12:54
文档中说,要将cors中间件放在列表的最前面。
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
---
all other middleware
]我把我的保龄球设置为-
CORS_ORIGIN_WHITELIST = [
"http://localhost:3000",
"http://localhost:5000",
"http://192.168.3.27:3000"
]这个很好用。
https://stackoverflow.com/questions/71912333
复制相似问题