我有一个使用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。
答案 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