/api-auth/login 的 ajaxing 时 djangorestfull 上的 CSRF 错误

CSRF error on djangorestfull while ajaxing for /api-auth/login

我在使用 djangorestfull 的 Web 项目的服务器端。我们的 UI 团队在端口 3000 上运行 UI 和 gulp 并且 Django 服务器在端口 8000 上运行。对于登录,我们使用 /api-auth/login url 作为 ajax。来自 /api-auth/login 的选项方法的答案包含 csrftoken 和一个表单,但是 post 方法(包含用户名和密码)面临 CSRF 错误。我怎样才能检查这个问题的根源?它是在服务器端还是令牌不会使用 post 方法发送?

这是我的 setting.py:

REQUIRED_APPS = [
    'django_admin_bootstrapped',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_extensions',
    'rest_framework',
]

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ]
}

urls.py

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('User.urls', namespace='User')),
    url(r'^schedule/', include('Schedule.urls', namespace='Schedule')),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

问题似乎来自 UI 团队。他们很有可能没有在 POST 请求中包含 CSRF 令牌。请确认。以下是 Django 中有关如何添加令牌的一些文档。 https://docs.djangoproject.com/en/1.9/ref/csrf/#ajax