Articles of http

外部Hello World服务器节点js

我期待使用Node.js在专用PC上托pipeWeb服务器,但似乎无法从本地networking以外的任何地方访问它。 从我在网上发现,似乎我所要做的就是在不同的networking浏览器中inputexternalIp:端口,我应该看到我的Hello World,但我不能让它通过类似ngrok的暴露我的本地主机的工作。 有谁知道我怎么能访问我的节点服务器从外部电脑在互联网上,而不只是本地主机? 这里是重现的步骤 require("http").createServer(function(request, response){ response.writeHeader(200, {"Content-Type": "text/plain"}); response.write("Hello World!"); response.end(); }).listen(8080); “node server.js” – 在端口8080上托pipe的非常简单的服务器,只是发送“Hello World!” 响应 在我的机器上检查localhost:8080,看到“Hello World!” 加工 从ipchicken.com获得externalIP 检查外部IP:8080在外部机器(手机,差异networking电脑),从来没有工作 也许有一些我错过了,但我认为这是非常简单的

Express.js:已在REST API上发送的标头

我用Node.js和Express.js创build了一个REST API。 在一个URL上,当我更多地调用这个URL时,我得到一个错误信息: 发送json错误:[错误:发送后无法设置标头。] 所以,我添加了一个try catch来捕获错误。 但奇怪的是,这工作很好。 错误被抓住,我的回应被发送: try { res.status(200).json(user); } catch (e) { console.log('send json error:',e); } res.on('finish', function() { console.log('All is ok, response sent with user datas'); }); 我认为这不是很干净的解决scheme。 所以我想知道为什么这个错误是抛出,我怎么能为这个问题写一个干净的解决scheme?

如何处理来自HTTP Post的响应

我正在使用Angular 2与Node.js,我正在尝试整合braintree,这并非简单的任务。 我发现从事务中返回结果对象而不redirect页面的唯一解决scheme是让HTTP Post请求发回对象。 这可能吗? onClick(){ var headers = new Headers(); headers.append('Content-Type', 'application/json'); var data = JSON.stringify({ "nonce": localStorage.getItem('nonce'), "amount": "5.88", "firstName": this.model.firstName, "lastName": this.model.lastName, "customerId": this.model.userID, "phoneNumber": this.model.phoneNumber, "shippingStreet": this.model.shippingStreet, "shippingCity": this.model.shippingCity, "shippingZip": this.model.shippingZip, "shippingState": this.model.shippingState, "billingStreet": this.model.billingStreet, "billingZip": this.model.billingZip, "billingState": this.model.billingState, "billingCity": this.model.billingCity, "email": this.userEmail, "date": this.date }); this.http.post('http://MyUrl.com:3300/checkouts', data, {headers: headers}) .subscribe(); […]

为什么后续的HTTP请求

我的JavaScript使那个检索JSON数组的ajax调用。 我试图模拟长时间运行的HTTP REST调用请求,需要更长的时间才能返回结果。 我这样做是延迟写入任何东西到服务器端的响应对象,直到请求到达5分钟后。 之后,我将状态设置为200,并用JSON结束stream写入响应。 在服务端放置一个断点,我意识到请求显示第二次,但浏览器的networking选项卡不显示另一个请求。 它可能不相关,但我使用browsersync middlewars来服务这个JSON,并写入字节,并在setTimeout()结束响应。 setTimeout(()=> { res.statusCode = 200; res.write(data); res.end(); }); 题: 任何人有任何解释为什么发生这种情况? 如果有一种方法来模拟另一种方式呢?

使用NodeJS从url下载大文件时,服务器崩溃

我试图从nodejs使用请求模块从url(需要login)下载一个文件(+ 200mb),但是当它完成下载时,服务器开始减速,直到崩溃或变得非常慢。 这是我目前的代码(它下载整个文件,但我的服务器最终崩溃): //Required modules var http = require('http'), url = require("url"), fs = require('fs'), request = require('request'), path = require("path"), events = require("events"), j = request.jar(), request = request.defaults({ jar : j }); // make te request login in with cookies console.log("downloading file :)"); request({ url:"http://example.com/", method:"POST", form:{u: "username",p: "password"} }, function(error,response,body){ setTimeout(function(){ request […]

Node.js发送带有base64解码字符的POST请求时,出现无效字符错误

我想用base64解码的string发送POST请求,但是我得到无效的字符错误。 我有这个块来生成base64解码的string: var domain = "domain.com"; var decoded = Buffer.from("x3abaARV"+domain+"1cYNYtk", 'base64').toString('ascii'); 然后我使用request模块从npm发送POST请求: var headers = { ip: "10.100.0.420", key: decoded, domain: domain } var options = { url: 'http://somedomain.com/foo/bar/example.json', method: 'POST', headers: headers, } request(options, (error, response, body) => { if (error) { console.log(error); } … 它返回: ypeError:在Object.exports.request(http.js:31:10)的新ClientRequest(_http_client.js:86:14)处,ClientRequest.OutgoingMessage.setHeader(_http_outgoing.js:358:11)在Request.nd(/ home / kuno / code / aviokarte-web […]

在电子,什么是最好的方式来做Ajax请求?

我使用电子来创build一个桌面应用程序,现在我需要从一些远程API获取数据。 我可以在Renderer进程中使用fetch或Reqwest之类的东西吗?或者使用主进程上的任何http npm包(如Request),并使用Electron的IPC来来回转换数据。 那么最好的办法是什么?

如何在节点中closures一个无界的pipe道stream请求?

我的节点/快速应用程序有一个terminal代理来自内部服务的数据stream,使用服务器发送的事件。 这意味着内部服务将继续在永恒中传输数据,直到连接closures。 它运行良好,但是当浏览器closures与我的节点应用程序的连接时,到内部服务的pipe道连接保持打开状态,从而导致内部服务有大量打开/未使用的连接。 所以我试图强制closures节点连接closures时的pipe道连接,但似乎无法弄清楚如何做到这一点。 代码看起来像这样。 使用request/request库pipe道。 import request from 'request'; app.get('/stream', (req, res) => { const stream = request.get({ url: 'https://internalservice.acme.com/stream' }) stream.on('error', console.log); stream.pipe(res); // When browser closes… req.on('close', () => { // …close connection to internal service stream.destroy() // <– doesn't work }); });

`server.listen()`如何保持节点程序运行

Node.js程序在事件循环为空时被终止。 如果我使用http模块创build一个没有任何callback的服务器被添加到事件循环,程序终止: const http = require('http'); const server = http.createServer(); 但是,如果我添加listen ,程序将继续运行: const http = require('http'); const server = http.createServer(); server.listen(5155); 那么,即使我不向事件循环添加任何东西, listen方法如何使进程继续运行? 它是否增加了一些事件循环? 它如何与它交互?

当累计块的大小大于阈值时如何结束http响应stream

我试图从url列表中下载一些文件,但是我不想下载任何超过一定大小的文件(比如说1mb)。 这些文件可能是千兆字节,所以我需要一种方法来取消下载响应stream增长大于1mb。 let request = require("request"); function getFile(url, callback) { request.get(url) .on('response', function(response) { let output = ""; response.on('data', function(chunk) { if(output.length > 1000000) { // ??? ABORT STREAM HERE ??? console.log(`${url} is too big`); callback(true); } else { output += chunk.toString("utf8"); } }); response.on('end', function() { console.log(`${url} download complete`); callback(null, output); }); }); } […]