Tôi bị mắc kẹt với lỗi này. Tôi đã triển khai mã trên máy chủ sản xuất và nó chạy trên cổng 80. Khi tôi cố gắng đăng nhập vào trang quản trị. Như trong hình, nó báo lỗi 403.
Lý do có thể là gì? Có vấn đề gì với mã Django hoặc cấu hình nginx của tôi không?
tập tin settings.py
hệ điều hành nhập khẩu
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BÍ MẬT_KEY = 'xxx'
GỠ LỖI = Đúng
ALLOWED_HOSTS = ['*']
CÀI ĐẶT_APPS = [
'Django.contrib.admin',
'django.contrib.auth',
'Django.contrib.contenttypes',
'django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
]
PHẦN MỀM TRUNG GIAN = [
'Django.middleware.security.SecurityMiddleware',
'Django.contrib.sessions.middleware.SessionMiddleware',
'Django.middleware.common.CommonMiddleware',
'Django.middleware.csrf.CsrfViewMiddleware',
'Django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'Django.middleware.clickjacking.XFrameOptionsMiddleware',
]
MẪU = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': Đúng,
'TÙY CHỌN': {
'context_processors': [
'Django.template.context_processors.debug',
'Django.template.context_processors.request',
'Django.contrib.auth.context_processors.auth',
'Django.contrib.messages.context_processors.messages',
],
},
},
]
ROOT_URLCONF = 'dự án.urls'
WSGI_APPLICATION = 'project.wsgi.application'
CƠ SỞ DỮ LIỆU = {
'mặc định': {
'CÔNG CỤ': 'django.db.backends.sqlite3',
'TÊN': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
AUTH_PASSWORD_VALIDATORS = [
{
'TÊN': 'Django.contrib.auth.password_validation.UserAttributionSimilarityValidator',
},
{
'TÊN': 'Django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'TÊN': 'Django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'TÊN': 'Django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
cấu hình nginx là:
máy chủ {
listen 80;
tên_máy chủ www.example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
vị trí /tĩnh/ {
bí danh /example/path/to/static/;
}
vị trí/{
bao gồm /etc/nginx/sites-available/uwsgi_params;
uwsgi_pass unix:/path/to/project/yo.sock;
uwsgi_param UWSGI_SCHEME https;
uwsgi_pass_header X_FORWARDED_PROTO;
proxy_set_header X-Forwarded-Proto https;
}
}
Làm thế nào để khắc phục lỗi này?
Có vẻ như bạn đang sử dụng URL biểu mẫu HTTP để đăng nhập vào trang web HTTPS
Trong trường hợp này bạn sẽ nhận được lỗi sau
nếu request.is_secure():
# Đảm bảo rằng Người giới thiệu của chúng tôi cũng được an toàn.
nếu người giới thiệu.scheme != 'https':
trả về self._reject(request, REASON_INSECURE_REFERER)
Bạn nên thay đổi url mẫu đăng nhập thành https://
Về python - Kiểm tra người giới thiệu không thành công (Người giới thiệu không an toàn, trong khi máy chủ được bảo mật), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/42434708/
Tôi là một lập trình viên xuất sắc, rất giỏi!