Nginx配置Content-Security-Policy后Infobip的wss WebSocket连接失败如何解决?
Infobip聊天机器人CSP配置适配方案
现有配置错误点
- CSP规则中混入了HTML
<a>标签,属于语法错误,会导致整条CSP规则无法被浏览器正常解析 connect-src配置了无效的'unsafe-inline'指令,该指令仅对script、style类资源生效,不会作用于websocket连接规则- 写死了Infobip动态生成的websocket路径后缀,聊天服务的websocket路径中随机串会随请求动态变化,固定配置特定路径无法覆盖所有请求
- 所有资源规则全部堆在default-src中,没有拆分到对应指令,会导致规则生效范围不符合预期
修正后的Nginx配置
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.infobip.com http://www.w3.org https://fonts.googleapis.com https://stackpath.bootstrapcdn.com *.youtube.com https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://stackpath.bootstrapcdn.com https://cdn.jsdelivr.net; img-src 'self' data: https://*.openstreetmap.org *.infobip.com; connect-src 'self' wss://*.infobip.com ws://*.infobip.com https://*.doubleclick.net; font-src 'self' https://fonts.gstatic.com https://stackpath.bootstrapcdn.com https://cdn.jsdelivr.net; frame-src 'self' *.youtube.com *.infobip.com;" always;
生效操作步骤
- 替换Nginx配置中原有的Content-Security-Policy响应头配置
- 执行
nginx -t验证配置语法无错误 - 执行
nginx -s reload重载配置使规则生效 - 清理浏览器缓存后重新测试Infobip聊天机器人功能即可
内容的提问来源于stack exchange,提问作者Baseplate
相关产品推荐
相关产品推荐

