docker+nginx+django+gunicorn部署的聊天板,websocket使用的是dwebsocket库。
1、使用http访问正常
2、在阿里云中下载了ssl证书
3、https访问首页及登录和后台都正常
4、就是主页中websocket连接失败
错误信息:
pace.min.js:2 WebSocket connection to 'wss://chat.uulxl2020.com/msg/' failed: Error during WebSocket handshake: Unexpected response code: 400
代码:
前端:var ws = new WebSocket("wss://" + window.location.host + "/msg/");
后端:
@require_websocket
def msg(request):
#这里根本没进来,所以没有任何可跟踪调试的信息
……
nginx:配置
django配置:
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTOCAL", "https")
SESSION_COOKIE_SECURE = True # 仅通过https传输cookie
CSRF_COOKIE_SECURE = True # 仅通过https传输cookie
SESSION_COOKIE_HTTPONLY=True