如何限制API只能在浏览器中运行?

我正在使用节点js,我把政策限制在api的浏览器的保证。为此,我把以下条件 app.route('/students').all(policy.checkHeader).get(courses.list) exports.checkHeader = function(req, res, next) { var headers = req.headers; if ( headers['upgrade-insecure-requests'] || headers['postman-token']) { res.status(401).json('Page not found'); } else { return next(); } } 我不知道我的过程是否正确。我正在寻找只存在于浏览器中的公共参数(header-parameter)。是否有人可以帮助我。谢谢。

Mongoose使用UTC时间保存和检索date,更改为服务器时区

我正在使用mongoose模型来保存我的logging,包括创build和更新的date。 这是我的模型模式: var CasesModelSchema = new mongoose.Schema( { caseId: Number, sessionId: String, createdAt: {type: Date}, updatedAt: {type: Date, default: Date.now}, docs: mongoose.Schema.Types.Mixed }, { collection: 'cases' } ); 我面对的问题是updatedAt字段将date时间保存为ISODate("2017-04-24T12:40:48.193Z") ,这是UTC,但我的服务器的时区是Asia/Calcutta 。 由于我需要根据服务器的时间进行查询,所以我需要将date时间保存在我的首选时区。 这是我需要执行的查询(获取过去10天的所有数据) var today = moment(moment().format('YYYY-MM-DD')).toDate(); var tenDaysDate = moment(moment().format('YYYY-MM-DD')).add(-10, 'days').toDate(); CasesModel.findOne({updatedAt: {$gte: tenDaysDate, $lt: today}}, function(err, caseData){ cl(caseData, __line); }); 我想要的是在10天前的Asia/Calcutta时区到今天的午夜( Asia/Calcutta时区)的最后10天内,查询所有更新的logging。 我怎么做?

用restify清理file upload后的临时文件

我正在用restify构build节点存储服务器。 我正在通过restify.bodyParser处理上传,其中引擎盖下使用formidable 。 在默认情况下,强大的商店文件在os.tmpDir() ,我需要将其更改为其他文件夹,所以我通过restify.bodyParser({uploadDir: '/path/to/new/tmp'}) 。 问题在于,即使在完成处理请求之后,这些临时文件仍保存在tmp目录中。 我已经看到了这个问题( 上传后处理临时文件 ),假设刚刚删除后处理它的tmp文件。 我的问题是,你是否需要总是手动删除文件? 即使使用默认的os.tmpDir()目录? 默认系统tmp文件夹如何工作? 它有时会冲洗吗?

无法让节点mssql正常工作

这是我现在使用mssql的方式,但是它有时会出错: JavaScript的: router.get('/academiejaren', (req, res) => { sql.connect(dbconfig, function (err) { var request = new sql.Request(); if (err) { console.log(err); return; } request.query("SELECT * FROM [Alg].[DefAJ];", function (err, recordset) { if (err) { console.log(err); return; } else { res.end(JSON.stringify(recordset)); } }); request.query(); }); }); 错误: { ConnectionError: Connection is closed. at C:\Users\Milan\Documents\Octopus\Octopus 2.0\node_modules\mssql\lib\main.js:1569:17 at _combinedTickCallback […]

节点,expression,在URL中处理“..”符号

我正在寻找获得节点(使用快递路由)来解决在url上执行任何路由之前,所有出现的../符号的url。 例如,如果在/a/b/../c/d/e/../../f处查询apache,它将首先parsing所有的../符号,并最终提供位于/a/c/f 。 然而,使用node + express, /a/c/f /a/b/../c/d/e/../../f /a/c/f /a/b/../c/d/e/../../f是从字面上得到的,并且不会匹配/a/c/f路由。 我的问题是,下面的代码不会响应像/a/b/../c/d/e/../../f这样的请求: app.get('/a/c/f', function(req, res) { return res.status(200).json({ msg: 'it worked!' }); }); 我怎样才能得到节点+快递解决../符号在url中?

对于Node.js应用程序,使用带有Express-Handlebars的Angular

我有一个运行Express的node.js应用程序,并将模板框架用作句柄。 我最近开始学习Angular并将其集成到我的node.js应用程序中。 唯一的问题是,明确的句柄和angular度的标记是相同的。 这两个框架都使用{{}}。 我做了一些研究,发现这个Stackoverflow的问题: 使用Express Handlebars和Angular JS 接受的答案build议使用interpolateProvider更改标记符号。 我实现了这一点,它不适合我(我已经在这个答案下评论)。 我的代码如下所示: main.handlebars <!DOCTYPE html> <html ng-app="myapp"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>GETTING STARTED WITH Angular</title> <meta name="description" content="An interactive getting started guide for Brackets."> <link rel="stylesheet" href="/css/style.css"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script> <script> var app = angular.module("myApp", []); app.config(function($interpolateProvider) { $interpolateProvider.startSymbol('//'); $interpolateProvider.endSymbol('//'); }); app.controller('DemoController', function() […]

可以通过蓝鸟的减法来解决依赖函数的数组吗?

任何人都可以澄清这个bluebird减lessfunction…它是如何工作的? 如何使用这个? 我希望这个函数像async.waterfall([ARRAY OF FUNCTIONS]) "use strict"; var Promise = require('bluebird'); var fs = Promise.promisifyAll(require('fs')); Promise.reduce([function() { return 'Hardy'; }, function(name) { console.log('0000' + name); return name + ' Jack'; }, function(fullName) { console.log('000011' + fullName); return fullName + ' Danial'; }], function(total, data) { console.log(total); console.log(data); }, 0).then(function(total) { }); 预期产出: 哈代Jack Danial

Firebase凭据错误

我有一些错误: 通过\“credential \”属性为initializeApp()提供的凭据实现无法获取有效的Google OAuth2访问令牌,并出现以下错误:\“获取访问令牌时出错:invalid_grant(无效的JWT:令牌必须是短期令牌,在合理的时间内)“。 有两个可能的原因:(1)您的服务器时间未正确同步或(2)您的证书密钥文件已被吊销。 解决(1),重新同步你的服务器上的时间。 要解决(2),请确保您的密钥文件的密钥ID在Firebase项目中仍然存在。 如果不是,则在服务帐户设置中生成一个新的密钥文件。 当我尝试在Nodejs中使用Firebase Admin SDK时。 在我的本地计算机上工作,但是当我尝试在AWS服务器中使用时,出现此错误。 一些小费?

错误:EPERM无法安装@ angular / cli

我已经尝试安装angular度cli与最新版本的节点,如你所说。 但这是不成功的。 我只用pipe理员用户尝试过 仅供参考 – 我已经在另一台机器上尝试过,也有同样的说法 操作系统:Windows7 64 节点v7.9.0 npm:v4.2.0 错误:EPERM:操作不允许重命名package.json C:\Windows\system32>npm install -g @angular/cli –save C:\Users\001091\AppData\Roaming\npm `– (empty) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\@a ngular\cli\node_modules\chokidar\node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@ 1.1.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"} ) npm ERR! Windows_NT 6.1.7601 npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\ […]

有没有办法parsingjsonp服务器端angular度通用?

我有一个网站build立了angular2,它从第三方服务器请求数据。 我也使用angular度通用来呈现服务器端的页面。 问题在于:parsingjsonp依赖于dom操作,这在服务器端是不可用的。 所以我只能得到没有数据的静态页面。 有没有办法parsing服务器端的jsonp?