Tag: http headers

在Koa中设置多个cookie头

我正尝试通过以下方式在我的客户端浏览器中清除两个Cookie: this.response.set('Set-Cookie', 'mycookie1=; Path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT; ,mycookie1.sig=; Path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT;'); 我似乎只能摆脱mycookie1而不是mycookie.sig 。

快速删除Etag标题

我已经search了很多,但仍然找不到解决scheme,我使用nodejs默认情况下设置etag为true,我尝试了所有我在网上find的解决scheme,它仍然是设置,例如: res.set('etag', false); res.removeHeader('ETag'); app.disable('etag'); app.use(express.static(__dirname + '/public'), { etag: false }); 而且它仍然被设置,所以,我在这里失去了一些东西,因为我在节点或者expression方面并不是那么有经验。 我的问题显然是,如何禁用这个头,因为,我有一个页面有很多图像(A LOT),所有这些都是静态的, etag引起了很多阻塞,因为它发送请求来检查有效性,并防止浏览器依靠cache-control ,这是非常大的页面加载时间。 谢谢您的帮助

如何在Node.js中使用相同的密钥设置多个http头字段?

我试图用cloudflare设置服务器推送 ,但他们需要多个link头字段来推送多个文件。 但是,我找不到任何logging的方式来包含多个标头字段在node.js中具有相同的键。 我尝试提供一个数组,但是它们将它们连接在一起作为单个头字段的值。

通过express获取错误:发送后无法设置标题

我正在创build快速应用程序,并在路由器中,我要从mongodb中获取数据。 这是我的代码 router.get('/', function(req, res, next) { MongoClient.connect(url, function(err, db) { db.collection('school').find({}).toArray(function(err, doc) { assert.equal(null, err); assert.ok(doc != null); res.render('index', { title: 'iGyan.org', schools: doc}); }); db.collection('students').find({}).toArray(function(err, doc) { assert.equal(null, err); assert.ok(doc != null); res.render('index', { title: 'iGyan.org',students: doc}); }); db.close(); }); }); 当我运行代码,并在浏览器中打开一个url,它给我错误的控制台说明 Error: Can't set headers after they are sent. 我已经看到几乎所有build议的问题在堆栈溢出问题,但不能得到帮助。 我知道这个错误是因为我在函数中渲染了两次,但不知道如何克服这种情况。

响应string中的未知字符

我想从我的Node.js服务器获取远程DOM 。 一般来说,我得到正确的回应,但在某些情况下,我得到这样的符号 +؃LcBJDIд 这是我的标题 res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); res.header("Accept-Encoding", "gzip,deflate, sdch"); 我能做些什么来获得正确的DOM ?

在NodeJS中下载文件

我正在编写HTML所见即所得的应用程序。 用户编辑网页后,应能够点击下载button,并通过浏览器提示保存编辑好的网页。 我不想将他们编辑的网页存储在我的服务器上,而是将文件发送到他们的本地机器上。 到目前为止,在我的应用程序中,我可以编辑模板,当用户单击下载button时获取HTML,并使用NodeJS的fs.createWriteStream方法,将HTML写入新创build的HTML文件。 但是,它会在我的服务器上创build文件,而不是提示浏览器将文件保存在“下载”文件夹中。 我使用Socket.io来告诉服务器下载HTML内容。 经过研究,我发现为了使浏览器提示用户保存下载文件,必须使用Content-Disposition:附件头来设置HTTP头。 总之,当用户在我的应用程序中单击下载button时,我该怎么做才能创build一个新文件,并直接保存在用户本地计算机而不是我的服务器上? 这是我在我的server.js文件中: io.sockets.on('connection', function(socket) { socket.on('downloadHTML', function(data) { var file = fs.createWriteStream('PearlEdit-template-Martketing.html', {flags: 'w'}) .write(data.html); }); });

是否有必要在Node.js中设置一个Content-Type?

刚开始使用Node.js,看到一些例子后,我发现通常Content-Type是在返回一些内容之前设置的。 通常这样的HTML的东西: res.writeHead(200, {'Content-Type': 'text/html'}); res.write(html); res.end(); 对于图像: res.writeHead(200, {'Content-Type': 'image/png'}); res.write(img, 'binary'); res.end(); 我读了.write()的文档 ,它说,如果没有指定头文件,它将切换到隐式头文件模式并清除隐式头文件。 通过一些testing,我发现我可以像这样写一行: res.end(html); // or res.end(img); 这两个工作正常。 我也用我的本地Apache服务器进行了testing,当我加载一个图像时查看了设置的头文件,那里没有Content-Type头文件。 我需要麻烦设置它们吗? 如果我不这样做,可能会出现什么情况或错误?

使用Express 4路由器无法获取Content-Type标头

我试图返回不同的内容,基于请求中的Content-Type头:纯文本或JSON对象。 在Express 3.x中,我使用了req.accepted('application/json')来查明用户是否要求使用JSON。 但req.accepted()在4.x中已被弃用。 我试过req.is() – 返回undefined ,而req.accepts() – 没用。 最后,我诉诸于: var router = require('express').Router(); router.get('/ping', function(req, res) { var serverTime = (new Date()).toLocaleString(); if(req.get('Content-Type').indexOf('json') !== -1) { res.set({'Content-Type': 'application/json'}); res.send({serverTime: serverTime}); } else { res.send('serverTime: ' + serverTime); } }); 这在localhost(用CURLtesting)上效果很好,但是一旦我部署到Heroku,我得到: TypeError: Cannot call method 'indexOf' of undefined at Object.router.get.res.set.Content-Type [as handle] 如何获得Express 4中的标题types,并正确处理? […]

强制Web服务器返回未压缩的数据(No gzip)

我正在使用http node.js 模块来发出http请求 。 我想强制Web服务器返回未压缩的数据。 [没有gzip,没有deflate] 。 请求标头 headers: { 'Accept-Encoding': 'gzip,deflate,sdch', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/31.0.1650.57 Chrome/31.0.1650.57 Safari/537.36', } 我尝试使用这个'Accept-Encoding': '*;q=1,gzip=0'但没有运气。 我看到两种方法: 强制Web服务器返回未压缩的数据。 使用一些nodeJs模块解压缩压缩的数据 我想去#1。

在GZip编码时进入正文

我正在将HTTP请求正文中的数据发送到具有gzip内容编码的Restify实例。 唯一的问题是我无法访问身体与gzip的数据。 这里是我用来确定它的JS代码,但是req.body是undefined: server.use(function(req, res, next) { if(req.headers['content-encoding'] == 'gzip') { console.log(req); // We have a gzipped body here var zlib = require("zlib"); var gunzip = zlib.createGunzip(); console.log("Body: "+ req.body) console.log("Length: " + req.body.length); } else { apiKey = req.query['apiKey']; authenticateAndRoute(apiKey, req, res, next) } }) 任何人都有关于如何访问这里或相当于req.body的线索?