Tag: 请求

快递+请求中途更改标题

我使用express作为我的服务器,并请求从上游框中检索内容。 我有这个漂亮简单的函数来将数据从上游stream传输到客户端: function(req, res){ request("http://example.com").pipe(res); } 上游方框正在返回caching头Cache-Control: no-cache我想修改Cache-Control: no-cache ,以便Nginx(反向代理)可以caching响应。 我应该在哪里放res.header('Cache-Control', 60); ? 我试过了: function(req, res){ var retrieve = request("http://example.com"); retrieve.on('data', function(chunk){ if(res.get('Cache-Control') != 60) res.header('Cache-Control', 60); }); retrieve.pipe(res); } 但是这会引发Error: Can't set headers after they are sent错误Error: Can't set headers after they are sent 。 是否有一个侦听器在发送头文件时触发,但是在writeHeader()之前?

ExpressJS:app.local和res.local有什么不同?

我试图学习Express,并在我的应用程序中,我有中间件,从Request对象传递会话对象到我的Response对象,以便我可以在我的视图中访问它: app.use((req, res, next) -> res.locals.session = req.session next() ) 但是app.locals可用于视图,对吗? 那么,如果我做app.locals.session = req.session它是一样的吗? 是否有一个约定的事物types的app.locals和res.locals用于? 我也困惑res.render()和res.redirect()之间的区别是什么? 什么时候应该使用? 谢谢阅读。 任何与快递有关的帮助表示赞赏!

Node.js请求中包含多个“Cookie”标头

我已经看到如何使用一个cookie进行请求,并且我已经看到如何使用多个cookie编写响应,但没有人知道如何使用http模块(如果可能)在多个node.js中编写请求“Cookie”标头? 到目前为止,我看到在node.js中发出请求的唯一方式是将一个对象作为parameter passing给一个函数,这需要两个相同的密钥。 headers = { Cookie: firstCookie, Cookie: secondCookie } 所以不会工作。 这是一个node.js问题,但是我对http没有太大的信心,所以我不确定是否没有办法在头文件中设置两个不同的cookie。 是否有可能连接成一个单一的头? 请求与两个单独定义的cookie不同,从一个单一的头包含两个?

nodejs,如何从其ServerRequest获取客户端时区信息

有没有人在NodeJS中招呼,有没有办法,服务器端脚本可以从ServerRequest对象检索客户端的时区信息? 谢谢

如何在node.js / express中testing由csrf保护的端点

我已经实施了csrf(跨站请求伪造)保护,如下所示: … app.use(express.csrf()); app.use(function (req, res, next) { res.cookie('XSRF-TOKEN', req.csrfToken()); next(); }); … 这很好。 Angularjs在通过$ http服务所做的所有请求中都使用了csrf标记。 我通过我的angular度应用程序的要求很好。 我的问题是testing这些API端点。 我使用摩卡运行我的自动化testing和请求模块来testing我的API端点。 当我使用请求模块向使用csrf(POST,PUT,DELETE等)的端点发出请求时,即使正确使用了cookie等,它也会失败。 有其他人想出了解决办法吗? 有没有人需要更多的信息? testing示例: function testLogin(done) { request({ method: 'POST', url: baseUrl + '/api/login', json: { email: 'myemail@email.com', password: 'mypassword' } }, function (err, res, body) { // do stuff to validate returned data // the […]

AngularJS + ExpressJS。 代理POST请求正在等待

使用AngularJS + Express我有以下代码将我的请求代理到远程服务: app.get('/api.json', function (req, res) { req.pipe(request("http://test-api.com/api.json")).pipe(res); }); app.post('/api.json', function (req, res) { req.pipe(request.post("http://test-api.com/api.json")).pipe(res); }); 所有的GET请求工作正常,但POST请求在我的浏览器中挂起。 以下是我的post: $http({ method: 'POST', url: '/api.json', data: $.param({ "title": not.title, "desc": not.description }), // pass in data as strings headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).success(function () {alert("Success");}); 怎么了? 编辑:这是在控制台上看到的请求: 我应该检查什么来提供更多的信息?

节点js – http.request()连接池的问题

考虑以下简单的Node.js应用程序: var http = require('http'); http.createServer(function() { }).listen(8124); // Prevent process shutting down var requestNo = 1; var maxRequests = 2000; function requestTest() { http.request({ host: 'www.google.com', method: 'GET' }, function(res) { console.log('Completed ' + (requestNo++)); if (requestNo <= maxRequests) { requestTest(); } }).end(); } requestTest(); 它一个接一个地向Google.com发出2000个HTTP请求。 问题是请求第5号并暂停大约3分钟,然后继续处理请求6-10,然后再暂停3分钟,然后请求11-15,暂停,等等。 编辑: 我试图改变www.google.com本地主机,一个非常基本的Node.js应用程序运行我的机器,返回“你好世界”,我仍然得到3分钟的停顿。 现在我读了我可以增加连接池的限制: http.globalAgent.maxSockets = 20; 现在,如果我运行它,它处理请求1 […]

nodejs中的SSL错误

我试图通过节点https.request()获取网页。 这样做会导致错误被我的代码logging下来。 使用节点请求模块具有相同的结果: 请求问题:140398870042432:错误:140773F2:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报意外消息:s23_clnt.c:658: 以下指出正在使用错误的SSL版本,但我找不到更改版本的方法: curl error:“sslv3 alert unexpected message” 。 从我的terminal使用curl会返回一个响应,就像在浏览器中inputURL一样(这是一个login页面)。 我的代码如下。 var request = require('request') request.get("https://icmserver.wit.ie/balance", function(err, res, body) { if (err) { return console.log(err) } return body; }); 有没有人有任何想法可能发生在这里?

图像下载后的callbackfunction

我正在尝试使用请求模块保存图像下载。 有了这个 request('http://google.com/images/logos/ps_logo2.png').pipe(fs.createWriteStream('doodle.png')); 它工作正常。 但是我想在图像完全下载后能够做其他的事情。 如何提供一个callback函数fs.createWriteStream?

如何使用node.js和Request包禁用HTTP头中的“withcredentials”?

从浏览器(通过browserify )使用node.js和Request包,我使用CORS在单独的域上执行HTTP GET请求。 在服务器上,当我将'Access-Control-Allow-Origin'设置为通配符'*' ,客户端上出现以下错误: XMLHttpRequest无法加载….当凭证标志为真时,通配符“*”不能在“Access-Control-Allow-Origin”标头中使用。 原因'…'因此不被允许访问。 HTTP请求标题如下所示: Accept:*/* Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8,ja;q=0.6 Access-Control-Request-Headers:withcredentials Access-Control-Request-Method:GET Cache-Control:no-cache Connection:keep-alive Host:localhost:3000 Origin:http://localhost:9966 Pragma:no-cache Referer:http://localhost:9966/ User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 所以清楚的问题是Access-Control-Request-Headers:withcredentials在头文件中Access-Control-Request-Headers:withcredentials ,对不对? 为了能够删除这个,我需要将'XMLHttpRequest'对象的'withcredentials'属性设置为'false'。 然而,我无法弄清楚node.js或Request包在创build“XMLHttpRequest”对象,我甚至可以访问它。 谢谢。