【问题标题】:Mixed content warning for insecure resources from Odoo来自 Odoo 的不安全资源的混合内容警告
【发布时间】:2018-08-03 14:52:40
【问题描述】:
我正在运行 Odoo,想添加一些缓存机制。
为此,我简单地添加了一个服务工作者和以下路由:
workbox.routing.registerNavigationRoute(
'/web/',
workbox.strategies.staleWhileRevalidate(),
);
不幸的是,我现在总是收到以下错误消息:
“混合内容:'https://test.emanju.de/sw.js' 处的页面通过 HTTPS 加载,但请求了不安全的资源 'http://test.emanju.de/web/login'。此请求已被阻止;内容必须通过 HTTPS 提供。”
显然 Odoo 引用了一些不安全的来源。现在我有以下问题:
1)我如何能够识别这些来源(全部)?我可以以某种方式扫描整个页面吗?
2) 我可以继续运行我的服务人员并忽略不安全的文件吗?在不调整现有应用程序代码和修复所有不安全文件的情况下仍然遵循我的目标的方法吗?
提前致谢!
【问题讨论】:
标签:
caching
odoo
service-worker
mixed-content
【解决方案1】:
我遇到了类似的问题:在电子学习模块(“幻灯片”)中加载 PDF 演示文稿会通过 http 而不是 https 请求资源。什么在我的情况下有效:
- 将
proxy_mode = True添加到odoo.conf的[options]部分(如果您使用docker部署,请将odoo.conf放入/etc/odoo/odoo.conf,在他们的docker-compose.yml示例中是一个共享文件夹(./config:/etc/odoo)
- 我正在使用的 nginx 配置(我缺少 X-Forwarded-Host 标头):
location / {
proxy_pass http://localhost:8069;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_redirect off;
proxy_request_buffering off;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
client_max_body_size 10240m;
}
- 在开发者模式下,进入设置 -> 技术 -> 系统参数,并确保您的
web.base.url 包含 https://(有些人还添加 web.base.url.freeze 设置为 True - 这似乎没有对我的安装有影响)
重启 nginx,重启 odoo,瞧,幻灯片中的 PDF 正在通过 https:// 请求。
【解决方案2】:
(这不是 Workbox 特有的,因为每当您使用 https:// 时,不安全的混合内容都是一个问题。)
在这篇“Preventing Mixed Content”文章中有一些关于如何识别正在加载的不安全资源的完整列表的建议。
如那篇文章中所述,假设正在加载的每个 URL 的 https:// 版本存在,您可以在提供 HTML 时使用 Content-Security-Policy: upgrade-insecure-requests 响应标头告诉浏览器到 automatically swap-in https:// URLs。
Service Worker 需要安全源,而安全源无法通过 http:// 加载资源。