如何将CORS标题添加到Meteor应用程序?
如何向Meteor中的所有响应添加如何将CORS标题添加到Meteor应用程序?,meteor,cors,Meteor,Cors,如何向Meteor中的所有响应添加访问控制允许源代码:标题(特别是,我对/public/下的静态文件感兴趣)?我需要这个,以便外部网络应用程序可以访问我的Meteor应用程序提供的数据。有关启用CORS的更多信息。有两种方法。一种是修改meteor代码并将其添加到中(以便每个文件都有这个头)。这可能不是一个好主意,因为您不希望每个文件都有这个。但若你们真的改变了,那个么就和应用程序挂钩吧 var app = __meteor_bootstrap__.app; app.use(function(r
访问控制允许源代码:
标题(特别是,我对/public/
下的静态文件感兴趣)?我需要这个,以便外部网络应用程序可以访问我的Meteor应用程序提供的数据。有关启用CORS的更多信息。有两种方法。一种是修改meteor代码并将其添加到中(以便每个文件都有这个头)。这可能不是一个好主意,因为您不希望每个文件都有这个。但若你们真的改变了,那个么就和应用程序挂钩吧
var app = __meteor_bootstrap__.app;
app.use(function(req,res) {
res.setHeader('access-control-allow-origin', '*');
});
另一种方法是使用自定义路由,例如。通过这种方式,您可以控制要在哪些文件中包含标题,因此最好使用这样的方式
服务器端js:
这是我写的一个小片段。您可以以如何访问meteor的核心连接和修改标题为例,这也是每个meteor项目的一个不错的插件:
/**
*HTTP头安全性
*
*强制实施HTTP严格传输安全(HSTS)以防止ManInTheMiddle攻击
*在支持的浏览器上(除IE外的所有浏览器)
* > http://www.html5rocks.com/en/tutorials/security/transport-layer-security
*
*@header严格的传输安全:最大年龄=2592000;包含子域
*/
var connectHandler=WebApp.connectHandlers;//获取meteor core的connect实现
//用于响应头注入的连接式中间件
Meteor.startup(函数(){
使用(函数(req、res、next){
res.setHeader('Strict-Transport-Security','max age=2592000;includeSubDomains');//2592000秒/30天
返回next();
})
})
我认为这在流星核心的当前状态下是不可能的。我们确实需要一种定制HTTP
头的方法。难道没有一种黑客的方法吗?如果我想用流星叉,我应该换什么呢?我建议托马斯的答案是正确的。在没有第三方软件包/hack的情况下访问connect中间件的干净方法。Akshat,在这种情况下是否可以使用readFileSync来减少代码?@Akshat澄清点。。。你是在说在流星核心进行编辑吗?这可以用在你的项目代码中,只要它在服务器上运行就行。我已经试着制作了app=\uuuuuuuuuMeteor\uuuubootstrap\uuuuuu.app
方法在server/app.js
(为此目的创建的新文件)上工作,但我一直无法使其工作。我在0.6.3
上。你有没有可能在某个地方有一个例子?\uuuuuMeteor\u bootstrap\uuuuuu.app
已经被重命名,我认为新的表单是WebApp.connectHandlers
,但是你还需要添加WebApp包(使用meteor add WebApp
)。使用最新版本的meteor(0.8.2)您可以使用WebApp.rawConnectHandlers
的“钩子”,看看我把它放在哪里?
Meteor.Router.add('/yourfile.txt', function() {
this.response.setHeader('access-control-allow-origin', '*');
var fs = Npm.require("fs");
return fs.readFileSync("/public/yourfile.txt", "utf8");
});