Tag: http

用新的URL重新运行路线

我有一个小的networking服务器,作为旧的URL优化器,它匹配旧的url和redirect到新的更好的SEO优化的url。 其中一个url是这样的: login.php?return=http://example.com/index.php?page=protected_page 现在优化服务后, http://example.com/index.php? /page/protected_page/现在只是/page/protected_page/和内部的authentication,所以当然我把一个像 'login.php': function(req, res, next) { if (req.query.return) { res.redirect(req.query.return); } } 'index.php': function(req, res, next) { if (req.query.page === 'protected_page') { // redirect to proper seo page without index.php res.redirect(…); } } 在这种情况下会发生什么,首先浏览器将被redirect到req.query.return的url,然后express将响应index.php上匹配的新请求。 这是可以的,但是如果基础架构复杂,客户端浏览器需要一些时间才能发出新的请求(如果访问网站的人在技术上远离服务器,甚至可能需要0.5-1秒)。 任何方式我可以采取req.query.return并有像app.processNewUrl(req.query.return) ?

请求遵循redirect,无需发布数据

我在Node.js中使用request.js来处理http请求。 request({ method: 'POST', uri: 'http://www.example.com/getData', followAllRedirects: true, followOriginalHttpMethod: true, json: true, form: { id: 1, msg: 'Test data', }, }, (err, res, body) => {}) 比如,当我将{ id: 1, msg: 'Test data' }到http://www.example.com/getData ,代理将redirect到http://us.example.com/getData 。 上面的代码redirect到http://us.example.com/getData ,但我怎样才能设置redirect与发布数据?

打开http / 2连接并发布表单数据

目的 此代码的目标是通过http2连接到API服务,然后维护该连接,以便可以将多部分表单数据发布到API: let options = { port: 443, hostname: 'avs-alexa-na.amazon.com', path: '/v20160207/directives', method: 'GET', headers: { 'Authorization': 'Bearer ' + JSON.parse(localStorage.getItem('CREDS')).access_token, } } var request = require('http2').request(options) request.on('response', function(response) { console.log(response) if (response.statusCode == 403) { //handle invalid token } else { //now lets make a POST request with form-data } //response.on('end', finish); }); 问题 […]

Node.js – 在HTTP GET请求查询中发送时,数组被转换为对象

以下Node.js代码: var request = require('request'); var getLibs = function() { var options = { packages: ['example1', 'example2', 'example3'], os: 'linux', pack_type: 'npm' } request({url:'http://localhost:3000/package', qs:options}, function (error , response, body) { if (! error && response.statusCode == 200) { console.log(body); } else if (error) { console.log(error); } else{ console.log(response.statusCode); } }); }(); 发送如下所示的以​​下http GET请求查询: {"packages"=>{"0"=>"example1", […]

什么是通过http发送的最佳块大小?

我必须通过http,服务器发送数据到服务器,这个基本types的代码: const http = require('http') const someBigData = require('./bigDataSource') http.createServer((req, res) => { res.write(someBigData) res.end() }).listen(8080) 事情是,一些someBigData可以非常大。 所以我的问题是,块的最佳尺寸是多less?

如何使用节点“http”redirect到目标url

我正在执行下面的代码段,但它不是redirect到实际的页面。 var http = require('http'); var options = { host: 'google.com', port: 80, path: '/search?q=hello+world' }; http.get(options, function(resp){ resp.setEncoding('utf8'); resp.on('data', function(chunk){ //do something with chunk console.log('================\n\n', chunk); }); }).on("error", function(e){ console.log("Got error: " + e.message); }); 指挥火力: node sample.js 输出: ================ <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>302 Moved</TITLE></HEAD><BODY> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.co.in/search?q=hello+world&amp;gws_rd=cr&amp;dcr=0&amp;ei=Wd3xWd_nBITovgSl9bXwCA">here</A>. </BODY></HTML> […]

在大多数端口上侦听时Node.js EACCES错误

我正在testing一个应用程序(希望在heroku上运行,但也有本地问题)。 它运行http.Server.listen()时给我一个EACCES错误 – 但它只发生在一些端口上。 所以,我正在运行: joe@joebuntu:~$ node > var h = require('http').createServer(); > h.listen(900); Error: EACCES, Permission denied at Server._doListen (net.js:1062:5) at net.js:1033:14 at Object.lookup (dns.js:132:45) at Server.listen (net.js:1027:20) at [object Context]:1:3 at Interface.<anonymous> (repl.js:150:22) at Interface.emit (events.js:42:17) at Interface._onLine (readline.js:132:10) at Interface._line (readline.js:387:8) at Interface._ttyWrite (readline.js:564:14) 我没有在900端口上运行任何东西(或其他任何20端口我试过),所以这应该工作。 奇怪的部分是,它在一些端口上工作。 例如,端口3000完美工作。 这会导致什么? 更新1: 我发现在我的本地计算机上,EACCES错误即将到来,因为我必须以root身份运行节点才能绑定到这些特定的端口。 我不知道为什么发生这种情况,但使用sudo修复它。 但是,这并不能解释我将如何修复Heroku。 […]

504网关超时错误NodeJs

我有一个在DC / OS实例中托pipe的应用程序,应用程序查询雪花数据库并得到结果。 我正在使用雪花sdk来查询雪花数据库,我们也正在stream动我们从雪花中得到的结果。 var statement = connection.execute({ sqlText: sql, complete: function (err, stmt, rows) { var stream = stmt.streamRows(); callback(err, stream, response); }} 但是,如果查询量大,查询处理花费时间在雪花,我的客户端得到504网关超时错误。尽pipe节点服务仍在运行,但假设我从浏览器/邮递员打到DC / OS我会得到504超时错误在这里,但雪花返回结果到我的节点服务。 什么是避免它的正确策略? 这是我从服务器上得到我的客户端的错误,虽然我的节点服务仍然保持与雪花连接,并从雪花得到的结果。

mean.io使用http请求堆叠长angular度运行操作

我正在使用平均值堆栈开发一个Web应用程序,对几个mongo db集合执行几个操作。 系统总体意图是在几个系统之间执行数据同步。 每个系统数据都存储在不同的集合中。 毋庸置疑,这些collections文件具有共同的性质。 在nodeJS或者API级别上,我创build了get和post请求,这些请求将asynchronous地遍历主集合,并尝试将该集合上的文档与其他集合中的文档链接起来。 自然这个过程需要几分钟的时间。 可能链接的文档存储在不同的mongodb集合中。 这些将在稍后的另一个节点js API调用中处理。 API设置后,我正在创build一个控制器和angular度的服务,以连接到API,并执行API获取和发布请求。 当我在UI中点击button来执行这个链接操作时,操作开始时不会阻塞浏览器,但最终浏览器会得到一个ERR_EMPTY_RESPONSE,因为操作仍在进行,所以我从来没有真正调用response.end() 。 我认为可能是一个可能的解决scheme: 操作开始后立即回复:PROBLEM – >我需要确保此操作完成,以便对所产生的集合进行其他调用。 所以我做了这个操作来完成,让其他人在结果数据集上完成。 为了避免浏览器在后台长时间运行操作完成之前closures连接,我该怎么做? 码: html – >用户点击开始链接logging的button: <div> <md-button aria-label="link all records" ng-click="vm.linkRecords()"> <md-icon class="mdi mdi-plus"></md-icon>Link Records </md-button> </div> 控制器 :canLink,canGrade都是布尔variables,所以当服务器正在进行一个操作时,其他任何一个都不能执行。 一旦操作完成,它将返回true,并允许所有操作。 function linkRecords() { $state.go('app.records.link'); }// END linkRecords page $scope.$on('linkRecords', function(event, batchSize){ if ( canLink && canGrade) { […]

用于浏览器和Flash的Node.js和套接字

做一个项目,将来自智能手机的设备定位数据传送到套接字服务器,然后从那里传送到一个Flash应用程序。 现在用nodejs创build一个http服务器并不难,通过浏览器从智能手机连接并通过socket.io传输数据的工作正常。 问题出在闪存,我无法设法连接我的闪存应用程序的HTTP服务器运行socket.io。 我想通过运行一个节点tcp服务器连接从闪存没有问题,但我没有更多的会议pipe理,我不能从浏览器连接了。 我会很高兴有一些想法/build议,真的被困在这里。 谢谢