Articles of express

护照authentication失败导致redirect循环

我正在使用节点,快递和护照与Facebook身份validation。 我有以下路线(当/facebook/auth/callback是callbackurl): function render(page, req, res) { var user = null; if (req.user) { user = req.user.toObject(); user.isLoggedIn = true; } res.render(page, { user: user }); } app.get('/auth-failure', function (req, res) { res.render('auth-failure'); }); app.get('/auth-success', function (req, res) { render('auth-success', req, res); }); app.get('/facebook/auth', passport.authenticate('facebook', { scope: [ 'email', 'user_about_me', 'publish_actions']})); app.get('/facebook/auth/callback', passport.authenticate('facebook', { failureRedirect: […]

使用jQuery AJAX与node.js,处理来自服务器的响应

这是我第一次在这里发表一个问题,我大多只是一个潜伏在其他问题上的潜伏者,但是这是我一直想弄明白的事情,而且我的生活不能。 基本上我正在做的是使用AJAX从客户端跳转到服务器,运行一些代码,search外部API给我一些数据,然后我需要这些数据返回到客户端。 这是我的代码…这是所有使用express.js的快递 客户端 $('#search').click(function(){ $.ajax({ type: "GET", url: "/search", dataType: "json" }).done (function (data) { alert(data); }); }); 服务器端 app.get('/search', function(req, res){ factual.get('/t/places',{q:'starbucks'}, function (error, data) { console.log(data); res.send(data); }); }); 现在我知道,单击#searchbutton时,它会转到服务器并成功运行该代码。 但是我不知道如何从服务器上获取这些数据,然后返回到客户端来在那里工作。 我发现其他职位提到像res.send / res.write / res.end,我已经尝试了所有这些forms的知识,我似乎永远不会将这些数据返回给客户端。 任何提示或可能更好的方法来做到这一点将非常感激。

套接字IO只会话不会持久

我正在使用我正在构build的聊天应用程序中的Socket.io 。 我正在尝试设置会话,以便在会话之间持续login用户。 以下是相关的代码: index.js (服务器) var cookieParser = require('cookie-parser')(); var session = require('cookie-session')({ secret: 'secret' }); app.use(cookieParser); app.use(session); io.use(function(socket, next) { var req = socket.handshake; var res = {}; cookieParser(req, res, function(err) { if (err) return next(err); session(req, res, next); }); }); io.on('connection', function(socket){ socket.on('test 1', function(){ socket.handshake.test = 'banana'; }); socket.on('test 2', function(){ […]

Heroku(Cedar)+ Node + Express + Jade子目录中的客户端JavaScript文件在工作时使用foreman + curl,但是当推送到Heroku时

我对节点和heroku很新,我怀疑这是一种简单的许可问题等,但我似乎无法跟踪它。 我在我的web.js文件所在的根目录下的一个子目录中有几个纯JavaScript文件。 我在我的web.js文件中有一行来指定目录 app.use('/heatcanvas',express.static(__dirname+'/heatcanvas')); 如果我使用Heroku Foreman在本地运行我的应用程序,那么在运行以下curl命令时,会得到预期的js响应 curl localhost:5000/heatcanvas/heatcanvas.js 但是,当我推到Heroku,并在浏览器中击中相应的实时url www.example.com/heatcanvas/heatcanvas.js 我收到以下内容: Cannot GET /heatcanvas/heatcanvas.js 如果我检查Firebug和/或Heroku日志,我发现我实际上得到这些文件的404错误,即使path应该匹配在本地完成。 另外值得一提的是,第三方javascript正好过来,只有脚本标记的src属性指向我的网站时才有问题。 我需要做什么才能使我的脚本可用?

如何设置RedisStore – Node,Express,Socket.io,Heroku

我正在使用部署在Heroku上的Node&Express 4.0,并且试图将Redis的Socket.io作为一个会话存储来实现。 所以我有这个作为我现在的代码: var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); var RedisStore = io.RedisStore; if (process.env.REDISTOGO_URL) { // inside if statement var rtg = require("url").parse(process.env.REDISTOGO_URL); var redis = require("redis").createClient(rtg.port, rtg.hostname); redis.auth(rtg.auth.split(":")[1]); } else { var redis = require("redis").createClient(); } /** Initialize RedisStore for socket.io **/ io.set('store', new RedisStore({ redis : […]

angular-jwt如何解密我的JWT没有秘密?

Auth0团队创build了一个名为“angular-jwt”的jwtHelper类。 这件事成功解码本地JWT没有我在服务器上使用的秘密。 这怎么发生的? 如果他们不安全,那么使用秘密签名/encryption他们有什么意义? encryption令牌的服务器上的函数(使用“jsonwebtoken”): function createToken (user) { return jwt.sign(_.omit(user, 'password'), config.secret, { expiresInMinutes: 60*5 }); } 来自客户的代码: angular .module('sample.home', [ 'ui.router', 'angular-storage', 'angular-jwt' ]) .config(function ($stateProvider) { $stateProvider .state('home', { url: '/', controller: 'HomeCtrl', templateUrl: 'modules/home/home.html', data: { requiresLogin: true } }) }) .controller('HomeCtrl', function homeController ($scope, $http, store, jwtHelper) { $scope.jwt = […]

Express(node.js)使用HTTPS和HTTP

我在node.js上使用express(3.0)框架来路由我的应用程序。 我的大部分应用程序都使用http协议,但是我只想通过https服务一条特定的路线。 这是我的API的一部分,它负责注册和authentication用户。 例如: app.get('/connect', function(req, res){ // Must be on HTTPS, if not redirect to HTTPS }); app.post('/connect', function(req, res){ // Must be on HTTPS }); app.get('/', function(req, res){ // Must be on HTTP }); app.get('/build', function(req, res){ // Must be on HTTP }); 如何在同一个应用程序中使用两者? 我正努力在野外find任何这样的例子。

加快部署Heroku

Heroku太棒了 但每次我部署,Heroku似乎喜欢重新下载和重build所有的软件包。 使用socket.io和mailparser这需要大约3分钟。 有没有办法加快部署过程? 有没有办法告诉Heroku它可以caching这些项目? 或者我可以上传预build的node_modules ?

快速请求被调用两次

为了学习node.js我创build了一个小应用程序,它获取mongoDB中存储的一些rss提要,处理它们并从这些提要中创build一个单一提要(按datesorting)。 它parsing了大约50个RSS提要的列表,大约有1000个博客项目,所以parsing整个项目是相当长的,所以我把下面的req.connection.setTimeout(60*1000); 得到足够长的时间来获取和parsing所有的提要。 一切运行相当好,但要求被称为两次。 (我用wireshark检查,我不认为这是关于favicon这里)。 我真的不明白。 你可以在这里testing你自己: http : //mighty-springs-9162.herokuapp.com/feed/mde/20 (它应该创build一个rss饲料与最后20篇关于“mde”的文章)。 代码在这里: https : //github.com/xseignard/rss-unify 如果我们专注于有趣的部分: 我有一个像这样定义的路线: app.get('/feed/:name/:size?', topics.getFeed); 而topics.getFeed就是这样的: function getFeed(req, res) { // 1 minute timeout to get enough time for the request to be processed req.connection.setTimeout(60*1000); var name = req.params.name; var callback = function(err, topic) { // if the topic has been […]

从Node.js POST到PHP

我正在尝试从Node.js应用程序发布一些数据到PHP脚本。 目前我只是build立一个概念certificate,但我无法把实际的数据转移到PHP端。 请求通过,我得到200回来,但PHP认为$ _POST数组是空的。 这是我的节点代码: // simple end point just for testing exports.testPost = function(request, response) { data = request.body.data; postToPHP(data); response.end(data); } function postToPHP (data) { var http = require('http'); var options = { host : 'localhost', port : 8050, path : '/machines/test/index.php', method : 'POST', headers : { 'Content-Type' : 'application/json', 'Content-Length' : […]