如何在IIS 10上为Django服务配置HTTPS解决混合内容报错
解决流程
该报错是HTTPS页面不允许发起HTTP请求导致,按以下步骤配置即可:
1. 前置证书准备
你已有的GoDaddy SSL证书需要先导入IIS10:
- 若你拿到的是
.crt+.key格式的证书,先执行命令转成IIS支持的.pfx格式:openssl pkcs12 -export -out 证书名.pfx -inkey 私钥文件.key -in 证书文件.crt
执行时按提示设置导出密码。 - 打开IIS管理器,点击根节点,选择「服务器证书」,右侧点击「导入」,选择刚才的pfx文件,输入导出密码完成导入。
2. IIS侧为Django应用配置HTTPS绑定
- 找到你部署Django服务对应的IIS站点,右侧点击「绑定」→「添加」
- 类型选择
https,端口填写你Django服务对外暴露的端口(即原HTTP请求用的xxxx端口),SSL证书选择刚才导入的GoDaddy证书,点击确定保存。 - 可选操作:删除该站点的HTTP绑定,或者配置URL重写规则强制HTTP请求跳转到HTTPS。
3. Django项目配置适配HTTPS
打开Django项目的settings.py文件,修改以下配置项:
# 新增HTTPS访问的域名/IP到允许列表 ALLOWED_HOSTS = ['你的前端域名', 'Django服务的HTTPS访问域名/IP'] # 配置IIS反向代理下的HTTPS识别 SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') # 强制所有请求走HTTPS SECURE_SSL_REDIRECT = True # 配置Cookie仅在HTTPS下传输 SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True
修改后重启Django对应的IIS站点生效。
4. 前端请求地址修改
将Vue项目中所有请求Django接口的地址前缀,从原http://x.x.x.x:xxxx替换为对应的HTTPS地址https://Django服务域名:xxxx,重新打包部署前端即可。
验证
直接在浏览器访问Django的HTTPS接口地址确认可正常访问,再打开前端页面触发接口请求,确认无混合内容报错即可。
内容的提问来源于stack exchange,提问作者Gary Joel
相关产品推荐
相关产品推荐

