添加force-ssl包到Meteor项目已经使用appcache

我有一个Meteor项目,它使用appcache包在浏览器中保存Meteor应用程序的caching。 现在我已经购买了SSL证书,并希望开始强制用户连接到该网站的https://地址。 所以我添加了force-ssl包。 但是,当用户访问http://example.com Meteor应用程序的caching版本时,它将获取caching更新通知,并尝试开始下载新版本的应用程序。 所以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头文件等下拉兔子洞,并认为可能有人已经这样做,可能会节省我一些时间。

据我所知,你不能从节点服务器提供SSL证书,所以生产中的标准解决scheme是build立一个代理服务器(在我的情况下为NGINX)来处理证书,然后转发给meteor。 我也发现一些挫折后,我需要删除force-ssl包,以便从代理转发。

这是我开始的一个线程 ,后来在上面发布了上面的解决scheme。

Appcache包在整个过程中都能正常工作并且正常工作。 它应该开始从https获得服务。 但假设它是坚持,如果你的应用程序不在生产使用(因为每个用户会遇到同样的问题),你可以手动删除httpcaching(在chrome它位于chrome://appcache-internals )。 希望这可以帮助。