Django+https 访问配置

发布于:2024-05-18 ⋅ 阅读:(136) ⋅ 点赞:(0)

Django+https 访问配置

一、简介

django-requests库发送https请求

import requests
from configs_test.configs_req import HOST
from requests.packages import urllib3
from requests.packages.urllib3 import disable_warnings

requests.packages.urllib3.disable_warnings()#忽略警告
# https协议

class Login_Test:
    def login_test(self, indata):
        # 1、请求地址
        url = f'https://10.0.0.22:8809/rpki/auto/ca_auto_register'
        # 2、请求头
        # 3、请求体
        data = indata
        # content_type:data
        # 4、执行请求
        res = requests.post(url, data=data, verify=False)


if __name__ == '__main__':
    Login_Test().login_test({'username': 'xxxx', 'psw': 'xxxxx'})


请求https协议的接口,需要增加以上两句:

requests.packages.urllib3.disable_warnings()#忽略警告

res = requests.post(url, data=data, verify=False)

django-requests库发送https请求访问项目提示如下错误。

在这里插入图片描述

提示错误:You're accessing the development server over HTTPS, but it only supports HTTP

二、解决方案 一

安装包

pip install django-extensions

pip install django-werkzeug-debugger-runserver

pip install pyOpenSSL

修改setting.py

在INSTALLED_APPS中增加

‘werkzeug_debugger_runserver’,

‘django_extensions’,

在这里插入图片描述

启动工程

python manage.py runserver_plus --cert server.crt 0.0.0.0:8809

三、解决方案 二

django中的SECURE_SSL_REDIRECT配置

在settings.py中添加SECURE_SSL_REDIRECT = True,默认下配置为SECURE_SSL_REDIRECT = False

1. 设置SECURE_SSL_REDIRECT = True

此时在浏览器发出http请求时django会重定向到https上。

以 $ python manage.py runserver启动应用,发出http请求后django后台日志如下: “GET / HTTP/1.1” 301 0 Self-signed SSL certificates are being blocked:Fix this by turning off ‘SSL certificate verification’ in Settings > General…

但此时web应用是不支持https的,报错如下 You’re accessing the development server over HTTPS, but it only supports HTTP

2. 设置SECURE_SSL_REDIRECT = False

此时http请求不会跳转到https,http此时django能正确访问。如果直接请求HTTPS时会报错如下: You’re accessing the development server over HTTPS, but it only supports HTTP.

django的https支持:sslserver插件

1.如果django需要HTTPS支持,可安装有sslserver插件:
$ pip install django-sslserver
2. 在settings.py中添加配置
SECURE_SSL_REDIRECT = False
INSTALLED_APPS = (
    ...
    "sslserver",
    ...
)
3. 自带证书启动django应用
$ python manage.py runsslserver
4. 指定证书启动django应用
$ python manage.py runsslserver --certificate /path/to/certificate.crt --key /path/to/key.key 0.0.0.0:8000

当SECURE_SSL_REDIRECT = False时,http请求无响应,https请求能正确访问。 当SECURE_SSL_REDIRECT = True时,http请求会重定向https,此时django支持https,可正确访问

5.使用gunicorn启动django
#!/bin/sh
# put 8 workers as Daemon listening for HTTPS on 443
gunicorn -D -w 8 --certfile=/path/server.crt --keyfile=/path/server.key djangoProject.wsgi -b 0.0.0.0:443

# put 2 workers as Daemon listening for HTTP on port 80
gunicorn -D -w 2 bodyofchrist.wsgi -b 0.0.0.0:80

网站公告

今日签到

点亮在社区的每一天
去签到