如何在Meteor中Access-Control-Allow-Origin: *为所有响应添加标题(特别是我对静态文件感兴趣/public/)?我需要这样,以便外部Web应用程序可以访问我的Meteor应用程序提供的数据.有关启用CORS的更多信息,请访问此处.
Tho*_*mas 20
这是我写的一小段.您可以使用如何访问meteor的核心连接和修改标头作为示例,这也是每个流星项目的一个非常好的插件:
/**
* HTTP Header Security
*
* enforce HTTP Strict Transport Security (HSTS) to prevent ManInTheMiddle-attacks
* on supported browsers (all but IE)
* > http://www.html5rocks.com/en/tutorials/security/transport-layer-security
*
* @header Strict-Transport-Security: max-age=2592000; includeSubDomains
*/
var connectHandler = WebApp.connectHandlers; // get meteor-core's connect-implementation
// attach connect-style middleware for response header injection
Meteor.startup(function () {
connectHandler.use(function (req, res, next) {
res.setHeader('Strict-Transport-Security', 'max-age=2592000; includeSubDomains'); // 2592000s / 30 days
return next();
})
})
Run Code Online (Sandbox Code Playgroud)
有两种方法可以解决这个问题.一种是修改流星代码并将其添加(以便每个文件都有这个标题).这可能不是一个好主意,因为你不希望每个文件都有这个.但是,如果你做了改变,挂钩到应用程序
var app = __meteor_bootstrap__.app;
app.use(function(req,res) {
res.setHeader('access-control-allow-origin', '*');
});
Run Code Online (Sandbox Code Playgroud)
另一种是使用类似流星路由器的自定义路由.通过这种方式,您可以控制要包含标题的文件,因此最好使用这样的文件
服务器端js:
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");
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9059 次 |
| 最近记录: |