小编abk*_*ECH的帖子

Django CORS CSRF_TRUSTED_ORIGINS 不起作用

我正在开发一个 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)的请求。谁可以帮我这个事?

python django django-rest-framework django-cors-headers

5
推荐指数
1
解决办法
3633
查看次数