Tag: http

在node.js中发出HTTP请求并发送一个数据体

我目前正在通过Guillermo Rauchs“Smashing Node.Js”书。 我被困在第7章,其中的任务是build立一个客户端/服务器,并通过http连接从客户端发送一个string到服务器。 该string应该从服务器打印。 客户端代码: var http = require('http'), qs = require('querystring'); function send (theName) { http.request({ host: '127.0.0.1' , port: 3000 , url: '/' , method: 'GET' }, function (res) { res.setEncoding('utf-8'); res.on('end', function () { console.log('\n \033[090m request complete!\033[39m'); process.stdout.write('\n your name: '); }) }).end(qs.stringify({ name: theName})); } process.stdout.write('\n your name: '); […]

node.js http服务器并发问题

每当我尝试发送连续快速的HTTP POST,服务器有时崩溃(java.net.ConnectException:连接被拒绝:连接),有时会冻结(没有错误,但不能再使用它),有时工作…. 如果我将HTTP Post慢慢发送到服务器,似乎没有任何问题。 我在node.js中有一个http服务器的简单代码 – 我的猜测是有时NodeJS服务器会收到一个请求,然后在发送响应之前接收到另一个请求,从而导致各种问题。 如何让我的服务器能够同时接受多个请求? var server = http.createServer(function (req, res) { if (req.method != 'POST') { res.end(); } else { req.on('data', function(chunk) { //Do some stuff here file1=JSON.parse(chunk.toString()); console.log("Hello World") ; } req.on('end', function() { res.writeHead(200, "OK", {'Content-Type': 'text/html'}); res.end(); }); } } server.listen(9000); 编辑这里是发送HTTP POST的Java程序 public static String httpUrlRequest(String requestURL, […]

如何获得快递js的邮寄请求?

我试图得到一个小的服务,我写了后variables,但似乎无法得到它在我的app.post方法的请求variables。 我相信这是我处理请求的方式。 是否有额外的步骤,我必须采取处理的要求? 我也尝试使用express.bodyParser(),但我有一个错误,说这是不赞成。 以下是我的小node.js文件: var express = require('express'); var app = express(); app.use(express.json()); // posting method : curl -X POST http://localhost:8080/post-page -d name=ArrowKneeous // to look at the req I found it better to start using: // nohup node testPost.js > output.log & app.post('/post-page',function(req,res){ var name= req.body.name; //undefined console.log('name is :' + name); //object […]

Node.js – 为什么我的一些callback不是asynchronous执行的?

Noob关于使用callback作为控制stream模式与Node和http类的问题。 根据我对事件循环的理解,所有的代码都是阻塞的,I / O是非阻塞的,使用callback函数,下面是一个简单的http服务器和一个伪rest函数: // Require var http = require("http"); // Class function REST() {}; // Methods REST.prototype.resolve = function(request,response,callback) { // Pseudo rest function function callREST(request, callback) { if (request.url == '/test/slow') { setTimeout(function(){callback('time is 30 seconds')},30000); } else if (request.url == '/test/foo') { callback('bar'); } } // Call pseudo rest callREST(request, callback); } […]

浏览node.js http服务器

我们创build了一个简单的js文件,试图找出http.createServer是否在客户端浏览器上工作: var http = require("http") var server = http.createServer() server.listen(9024, function () { console.log("demo server listening on port 9024") }) 并在browserify后embedded到一个HTML。 在chrome中显示html,不幸的是,它在http.createServer()的第2行上总是失败: "Uncaught Type Error: undefined is not a function" 我们也玩过“伺服浏览器”,但没有成功。 我们在chrome和firefox以及Linux和Windows上都尝试过同样的事情。 全部失败。 通过networkingsearch,有很多浏览器http浏览器的例子。 它们都似乎是对browserify的简单调用。 但是,我们似乎不能得到同样的好结果。 您的帮助将非常感激。

什么是邮差“拦截模式”相当于在Node.js?

我曾经使用邮差拦截器( https://chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo?hl=en )发送请求。 这是我如何处理请求的标题和正文: 你可以自己尝试。 你可以看到,一旦你打开“拦截模式”,你会得到不同的回应,而不是“没有”。 现在,我想发送相同的请求,但通过在Node.js中使用“https”模块。 我遵循以下模式: var https = require('https'); var querystring = require('querystring'); var post_data = querystring.stringify({ hid_last: "SMITH", hid_first: "JOHN", __RequestVerificationToken: "EiO369xBXRY9sHV/x26RNwlMzWjM9sR/mNlO9p9tor0PcY0j3dRItKH8XeljXmTfFWT0vQ1DYBzlGpLtnBBqEcOB51E9lh6wrEQbtMLUNOXpKKR3RzFqGc9inDP+OBIyD7s9fh9aMAypCHFCNFatUkx666nf7NOMHHKfiJKhfxc=", hid_max_rows: 20, hid_page: 1, hid_SearchType: 'PARTYNAME' }); // An object of options to indicate where to post to var post_options = { host: 'a836-acris.nyc.gov', path: '/DS/DocumentSearch/PartyNameResult', method: 'POST', headers: […]

为什么在Node.js中默认保持HTTPclosures?

这是我第一次在Node.js中实现后端,我发现默认情况下, HTTP Agent 保持活动选项closures。 对于我来说,它会影响性能,因为我正在使用AWS SDK向其服务请求大量请求。 其实我的负载testing帮助发现这个选项是closures的 – 所以我启用它,并获得更好的性能。 我想知道是否有人知道为什么它被默认closures? 是不是打破兼容性 (AFAIK这个选项是几年前添加的)还是其他原因? 也许我错过了什么? find提交的地方 – https://github.com/nodejs/node/commit/9fc9b87472806147b83c24d85b303c4f75d3021c 纳扎尔

Node.js CORS导致403 Forbidden

我们的网站使用HTML5抓取API来调用我们的后端NodeJS服务来执行某些操作。 我们的后端驻留在与主站点不同的域中,因此我们在Node应用程序上启用了CORS。 这为我们的客户99%的工作。 但是,一个客户一直有问题。 他们试图从他们的工作场所访问我们的网站(也许他们的工作场所networking有更高的安全设置..?),他们收到以下错误: api.our-node-backend.com/blah无法加载资源:服务器的状态为403(Forbidden)书:1提取API无法加载https://api.our-node-backend.com/blah 。 对预检请求的响应不会通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 原因' https://www.our-frontend-website.com '因此不允许访问。 响应的HTTP状态码为403.如果一个不透明的响应满足您的需求,请将请求的模式设置为“no-cors”,以取消禁用CORS的资源。 我们的Node应用程序目前configuration如下: app.use(function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type'); next(); }); // respond to options pre-flight app.options('*', function(req, res) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type'); res.status(200).send(); }); 这个configuration有什么问题吗? 堆栈溢出的其他示例将Access-Control-Allow-Headers设置为“Origin,X-Requested-With,Content-Type,Accept”而不是“Content-Type”。 这有什么不同?

发送后无法设置标题…没有问题,直到我join了身份validation?

我遇到了一些问题,试图从我的应用程序发送自定义标头的axios请求,所以我可以使用它们在我的服务器上进行身份validation。 我有一个使用Firebase身份validation和节点/快递后端服务器的原生应用程序。 当用户login时,我会抓住他们的firebase idtoken并存储它。 然后,只要我向服务器发出axios请求,我就会把这个idtoken作为头文件发送出去。 const { currentUser } = firebase.auth(); const url = ${serverUrl}/api/users/${user.uid`; const idtoken = await currentUser.getToken(true); var config = { headers: { idtoken }, }; const response = await axios(url, config); 在服务器代码中,将会有一个快速中间件来检查请求头中发送的idtoken是否有效。 如果是,它将调用next()并继续执行逻辑。 如果没有,那么它会失败并发送401状态。 这是在我的app.js : const app = express(); app.use(bodyParser.json()); app.use(firebaseAuthentication); router(app); 这是firebaseAuthentication中间件: const firebaseAuthentication = async (req, res, next) […]

如何防止当我不回答请求时发送“502错误的网关”?

对于使用express服务器的特殊用例(强制客户端,不响应503状态码重复请求),我根本不需要响应客户端请求。 但是Express在apr之后发送一个502坏的网关。 2分钟,当我只是省略发送结果。 我怎样才能做到这一点? 我试图赶上超时,但这并没有帮助: app.use((req, res, next) => { if (!req.timedout) { next(); return; } console.log('Timeout!') });