【问题标题】:Adding the force-ssl package to Meteor project already using appcache将 force-ssl 包添加到已经使用 appcache 的 Meteor 项目
【发布时间】:2014-10-06 11:59:28
【问题描述】:

我有一个 Meteor 项目,它使用 appcache 包在浏览器中保留 Meteor 应用程序的缓存。现在我已经购买了 SSL 证书,并希望开始强制用户连接到该站点的 https:// 地址。所以我添加了 force-ssl 包。但是,当用户转到 http://example.com 时,Meteor 应用程序的缓存版本会加载,它会收到缓存更新通知,并尝试开始下载应用程序的新版本。因此,http:// 站点现在正尝试从 https:// 站点请求资源,但由于 CORS 问题,浏览器阻止了此操作。

我已经使用了 force-ssl 包,甚至尝试设置一些标题:

var host = url.parse(Meteor.absoluteUrl()).hostname;
res.setHeader('access-control-allow-origin', 'http://' + host);
res.setHeader('access-control-allow-credentials', 'true');
res.setHeader('access-control-allow-methods', 'POST, GET, OPTIONS');

但我仍然看到类似以下的 CORS 错误:

GET https://www.example.com/sockjs/881/y6to3ysz/xhr 405 (Method Not Allowed) 

有人知道如何正确设置标题,以便更新可以从 https:// 到 http:// 站点吗?我在设置 socksjs 标头等方面陷入困境,并想也许有人已经这样做了,可能会节省我一些时间。

【问题讨论】:

    标签: node.js caching ssl meteor websocket


    【解决方案1】:

    据我了解,您无法从节点服务器提供 SSL 证书,因此生产中的标准解决方案是设置代理服务器(在我的情况下为 NGINX)来处理证书,然后转发到流星。在一些挫折之后,我还发现我需要删除 force-ssl 包才能从代理转发。

    Here is a thread我开始并稍后将上述解决方案发布到这一点上。

    appcache 包在整个过程中正常运行,并且符合我的预期。它应该开始从 https 获得服务。但是假设它是粘着的,并且如果您的应用程序没有投入生产使用(因为每个用户都会遇到同样的问题),您可以手动删除 http 缓存(在 chrome 中它位于 chrome://appcache-internals)。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-15
      • 2016-03-02
      • 1970-01-01
      • 2017-12-23
      • 2021-07-19
      • 2015-11-13
      • 2019-04-21
      • 1970-01-01
      相关资源
      最近更新 更多