如何使用Docker在Django中使用POST数据创建urllib请求时解决Forbidden 403错误?

时间:2016-10-25 23:23:43

标签: python django docker urllib

我有一个使用Docker的三层Django项目。第一个容器是前端并完成所有渲染,第二个层处理前端显示内容的逻辑,并通过请求JSON与数据库层(第三个)交互,第三个容器/层直接与之交互数据库。

我在前端有一个用户尝试注册的表单。但是,当我使用POST对我的第二层进行API调用并传递表单值时,我一直收到403 Forbidden Error。我在表单中使用CSRF令牌。如何删除403 Forbidden Error?

前端级别的views.py中的一些代码:

def signup(request):
      #more code
      username = form.cleaned_data["username"] 
      #and some more fields
      data = {"username": username, "password":password, ... "location": location}
      postData = urllib.parse.urlencode(data).encode('utf-8')
      try:
         req = urllib.request.Request("url to API in 2nd layer", postData)
      #more code

Django尝试执行try语句,但我收到403 Forbidden Error。

1 个答案:

答案 0 :(得分:0)

您需要在第二个Django项目中允许CORS调用

pip install django-cors-headers

.....

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

.....

MIDDLEWARE_CLASSES = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

这是引用的lib。 Django-CORS-Headers