使用Python和Django在https上运行应用程序时出错

时间:2017-08-07 10:36:38

标签: python django

我需要在https上测试我的APP,但是在使用Python运行我的应用程序时,我收到以下错误。

This site can’t provide a secure connection

127.0.0.1 sent an invalid response.
ERR_SSL_PROTOCOL_ERROR 

我正在使用Python和Django创建一个应用程序,并希望在https上运行。我的settings.py如下所示。

settings.py:

"""
Django settings for carClinic project.
"""

import os

""" Build paths inside the project like this: os.path.join(BASE_DIR, ...) """
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

""" SECURITY WARNING: keep the secret key used in production secret! """
SECRET_KEY = 'e8rq8bj5=w6cyiw&37s2kdys&$mg9m8agh@-%c6_+-jpu-21y='

""" SECURITY WARNING: don't run with debug turned on in production! """
DEBUG = False

ALLOWED_HOSTS = ['*']


""" Application definition """

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bookingservice'
]

MIDDLEWARE = [
    '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',
]

ROOT_URLCONF = 'carClinic.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'carClinic.wsgi.application'


""" Database """

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


""" Password validation """

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


""" Internationalization """

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

SECURE_SSL_REDIRECT = True

""" Static files (CSS, JavaScript, Images) """

STATIC_URL = '/static/'

1 个答案:

答案 0 :(得分:0)

要通过HTTPS连接,您需要在服务器上使用有效的SSL证书。从错误消息看,您似乎正在连接到本地计算机上的服务器,虽然您可以获得该证书,但它可能不值得。如果您计划部署到服务器,则没有理由在本地计算机上测试HTTPS,因为您必须在服务器上再次设置SSL,即使它在您的计算机上运行,​​它也可能不起作用服务器。

我建议您将应用程序部署到服务器(您需要一个像apache或nginx这样的网络服务器),然后设置一个免费的Let's Encrypt certificate。然后,您就可以通过HTTPS进行连接。

如果您确实需要在本地计算机上执行此操作,则必须首先获得固定的公共IP地址,您必须从ISP获取该IP地址。如果您使用现在的IP地址,它可能会在几天左右更改,然后您将需要获得新证书。