Tag: 连接

在nodejs中压缩json

我有一个服务器在nodejs写入使用连接。 我正在暴露一些数据为JSON。 发送前我必须压缩数据。 我用连接的压缩function,但我不知道如何检查数据,如果它的压缩或不。 以下是我的代码: var connect = require('connect') , http = require('http'); var app = connect() .use(connect.compress(console.log("I have compressed data"))) .use(function(req, res){ res.setHeader('Content-Type', 'application/json'); //res.end("store_id: 'S3000981'"); res.end('{"store_id": "S3000990"}'); }); http.createServer(app).listen(3000); 任何关于这个想法将是非常有帮助的。

为什么我无法通过networking共享连接到连接投放的网站?

我正在使用grunt,connect和livereload在开发期间提供一个testing页面(这是一个单一的平面HTML页面),我想在我的手机上testing这个站点。 通常情况下,我使用networking共享来做到这一点 – 通过使用我的Mac的本地URL( my-imac.local )导航到网站。 当我使用Python的SimpleHTTPServer服务页面时,这工作正常。 当我使用grunt / connect时,它在那里是不可访问的(尽pipe它仍然可以在本地主机上访问)。 如何将连接configuration为响应这些请求? 我的gruntfile,供参考: var path = require('path'); var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet; var folderMount = function folderMount(connect, point) { return connect.static(path.resolve(point)); }; module.exports = function(grunt) { function registerRobustTasks(name, tasks) { grunt.registerTask(name, function() { // so we don't have stupid issues with grunt crashing // every time a […]

如何将HTTP标头发送到Connect(Node.js)中的静态目录

我有一个简单的连接服务器,提供一个目录。 我想发送一个自定义的HTTP头到它所服务的所有文件。 这是我现在的代码: var connect = require('connect'); var app = connect() .use(connect.static('public')) .listen(3000); 我怎样才能发送一个头到公共目录中的每个页面(甚至是服务器所服务的每个页面)呢? (为了好奇,我正在尝试向每个页面发送'x-frame-options')

在数据标题中不显示cookieSession密钥

我试图解决在socket.io中访问会话variables的臭名昭着的问题。 我基本上已经阅读过谷歌关于这个话题的每一个链接,而且我还在挣扎。 毕竟我的路由我有这个: io.set('authorization', function(data,accept) { data.cookie = cookie.parse(data.headers.cookie); —> console.log(data.cookie); data.sessionID = connect.utils.parseSignedCookie(data.cookie['express.sid'].split('.')[0].substring(2), conf.sessionSecret); sessionStore.get(data.sessionID, function (err, session) { console.log(session); }); }); 不幸的是,我画了一个箭头的console.log返回: { 'connect.sid': 's:3pIi31DPthO8KVOjqzYpeL75.nHvKOpMZsUsyto7CtBJgcJZIiBSN+IC2/aD0GcfYftU' } 所以当然,我得到一个关于express.sid未定义的错误。 当我更改express.sid connect.sid时,我的会话variables未定义。 我真的很努力地解决这个问题 – 我已经在这里待了几个小时。 任何帮助? 编辑:总结我解决的问题: 在app.config中,我使用cookieSession而不是会话 我的客户端连接到我的服务器的端口转发的外部ip版本。 这不包含cookie数据。 .split('。')[0] .substring(2)在查找sessionID时是绝对必要的 在io.set('authorization,function(handshake,callback)…必须调用“callback(null,true)”)的结尾,以便socket.io连接正常进行

Express 3,Apache代理和basepath

我有一个较旧的Express 2.5.9应用程序,我正在使用Express 3.4.x进行最新的操作。 在生产中,应用程序由Apache使用RewriteRule代理: RewriteRule ^/path/to/app/(.*)$ http://nodeserver.domain.com:3000/$1 [P,L] RewriteRule ^/path/to/app$ /path/to/app/ [R,L] 因此,在生产中, http://domain.com/path/to/app/foo ://domain.com/path/to/app/foo被代理到http://nodeserver.domain.com:3000/foo ,而Express则正常处理/ foo路由。 在Express 2.x中,我使用了basepath设置,以便在生产环境中正确处理redirect(例如,如果我需要redirect到/login , basepath设置,设置为/path/to/app将实际redirect到/path/to/app/login 。在开发中没有设置basepath (例如,在http://localhost:3000访问应用程序)。 在Express 3中已经删除了basepath ,所以设置不再起作用,我的redirect也没有(例如,如果我去http://domain.com/path/to/app/admin ,该路由有中间件redirect到/login ,最终被redirect到http://domain.com/login )。 我可以重写我的redirect res.redirect('/login') 至 var redirectUrl = config.basepath ? config.basepath + '/login' : '/login' res.redirect(redirectUrl) 但这似乎不雅。 我已经考虑过安装方法,但是对于这种情况似乎有些矫枉过正。

express.session()parsing/更改服务器上的会话

我想parsing(和更改)存储在服务器上的所有会话。 (如果我可以做到这一点,而不使用商店)。 有没有req.session聚合存储的地方? .session是一个服务器端variables,因此它必须存储所有活动的会话,并且应该是可浏览的。 会话文档 。

使用node和express服务获取(/ foo /:bar)请求,当res.render(模板)时,模板中的所有相对链接都是相对于/ foo而不是/

我的节点服务器代码中的违规路由是这样的: app.get('/s/:searchTerm', function(req, res) { res.render('index'); }); 发生这种情况之后,index.jade中的所有相关链接都是相对于“hostname / s /”,而不是“hostname /”,这是破坏的。 我的节点设置如下所示: app.set('view engine', 'jade'); app.set('views', __dirname + '/views'); app.use(express.static(__dirname + '/public/')); app.use(express.favicon(__dirname + '/public/img/favicon.ico')); app.use(express.json()); app.use(app.router); 除了/ s /:searchTerm路由之外,所有这些路由都起作用。 即使是/结果路线。 在那里,partials / result中的相对链接与我所期望的'hostname'相关。 app.get('/', function(req, res) { res.render('index'); }); app.get('/s/:searchTerm', function(req, res) { res.render('index'); }); app.get('/results', function(req, res) { res.render('partials/results'); }); index.jade只是引用layout.jade: extends […]

空inputvalidation不起作用

我一直有一些问题试图获得以下脚本来validationinput。 app = connect() .use(connect.bodyParser()) #So we can get the post data. .use(req,res) -> valid = false if (req.body.name is "") or (req.body.question is "") or (req.body.email is "") #Was all the data submitted? if valid #process request http.createServer(app).listen(1407) 为了debugging我已经使用console.log列出input,它返回两个input,其中一个具有正确的数据,另一个undefined 我以前使用req.body.name? 以及,但它只是重写为req.body.question != null而不是检查未定义。 HTML表单 <form action="_serverurl_" method="post"> <input type="text" placeholder="Your Name" name="name"> <input type="text" […]

使用连接接收文件与NodeJS

我想用nodejs接收图片,audio和video文件。 我通过手机发送它们作为http请求。 使用nodeJS我使用connect插件。 我真的不明白它的作用,以及如何操纵文件存储的位置。 var http = require('http'); var connect = require('connect'); var app = connect(); var server = http.createServer(app); app.use(connect.bodyParser()); app.use(function(req, res) { console.log(req.files); // Here is object with uploaded files }); server.listen(8070); 我怎么能告诉连接到文件的其他地方存储在临时目录中。 我怎样才能读取请求选项,以决定我要存储该文件的位置。 这是一个文件是关于: { file: { fieldName: 'file', originalFilename: 'VID_20131211_124140.mp4', path: 'C:\\Users\\krause\\AppData\\Local\\Temp\\4120-1fx90bk.mp4', headers: { 'content-disposition': 'form-data; name="file"; filename="VID_20131211_124140.mp4"', 'content-type': 'video/mp4' }, […]

你如何改变快速静态目录?

我在开发平台上工作,我有类似于以下代码: app.use('/public', express.static( config.directory.public )); 问题是有很多(100)个项目,每个都有自己的目录结构。 该项目将通过URLselect: http://localhost/dev/accounts 凡帐户是一个项目有自己的目录树和静态公共目录。 我不想为每个项目运行一个单独的节点副本。 一旦通过URLselect了一个项目,express就需要重新configuration为该请求提供文件。 但是,这种做法可能是不可行的,因为我们可能同时在做很多项目。 因此,每个对静态文件的请求都必须根据项目URL进行处理。 它似乎否定了静态目录的好处。 我认为我所追求的是将variables放入目录path的方法 http://localhost/dev/accounts 将设置一个名为prj =“accounts”的variables,然后以某种方式设置express以便根目录是“c:\ projects \”+ prj +“\ public”。 如果我只是为每个请求发出一个新的app.use(..)语句,我想会发生不好的事情。 也许我最好是手动读取每个静态请求的文件内容并发回内容。 有没有另一种方法来解决这个问题?