Articles of http

如何捕捉不存在的主机上的node.js http错误?

当我试图使用http模块访问不存在的主机,如下所示: requestToRemote = http.createClient(80, 'fjasdfhasdkfj.vvvxcz').request( method, path, headers ); 但是我得到以下错误: node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: getaddrinfo ENOENT at errnoException (dns.js:31:11) at Object.onanswer [as oncomplete] (dns.js:140:16) 我想赶上这个错误,所以我试过try / catch和设置一堆请求属性的错误侦听器,但没有任何工作。 我怎样才能捕捉到错误?

如何使用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”对象,我甚至可以访问它。 谢谢。

讨论:通过node.js聊天服务器:HTTP还是TCP?

我正在考虑使用node.js / socket.io做一个聊天服务器。 我应该使它成为一个TCP服务器或HTTP服务器? 我想tcp服务器会更有效率,但你可以发送其他东西,如文件附件等? 如果tcp更高效,还有多less呢? 另外,只是想知道一个node.js服务器可以处理多less个并发连接? 是更多的工作做TCP或HTTP?

通过PHP或Apache从服务器端上传HTTP文件

在将大文件(> 100M)上传到服务器时,PHP总是首先从浏览器接受全部数据POST。 我们无法注入上传过程。 例如,在我的PHP代码中,在将整个数据发送到服务器之前检查“ token ”的值是不可能的 : <form enctype="multipart/form-data" action="upload.php?token=XXXXXX" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="3000000" /> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form> 所以我尝试使用这个mod_rewrite : RewriteEngine On RewriteMap mymap prg:/tmp/map.php RewriteCond %{QUERY_STRING} ^token=(.*)$ [NC] RewriteRule ^/upload/fake.php$ ${mymap:%1} [L] map.php #!/usr/bin/php <?php define("REAL_TARGET", "/upload/real.php\n"); define("FORBIDDEN", "/upload/forbidden.html\n"); $handle = fopen ("php://stdin","r"); […]

如何在Node.js Express应用程序中将来自远程URL的文件作为GET响应发送?

上下文:使用Express的多层Node.js应用程序。 前端作为Azure网站托pipe,后端数据来自Parse。 我有一个GET端点,我希望用户体验是一个文件下载。 如果该文件与我的前端位于同一台服务器上,则可以使用 res.sendfile(localPath); 然而,该文件是由我的后端托pipe在另一台服务器上,我的前端知道的是URL。 所以我现在正在做: res.redirect(externalURL); 这导致浏览器导航到资产文件URL(这是一个video),并显示在浏览器中。 我想知道的是: 如何让浏览器下载该文件,而只是停留在同一页面? 我在这里search了一段时间,没有先将文件下载到我的前端的临时文件,我不明白这样做的方式,我显然不这样做。 这可能是HTTP 101的东西,所以我感谢任何帮助!

Python – ConnectionError:超过最大重试次数

当我的服务器(称为服务器A)向另一个服务器(所有服务器B)上的资源发出请求时,偶尔会出现此错误: ConnectionError: HTTPConnectionPool(host='some_ip', port=some_port): Max retries exceeded with url: /some_url/ (Caused by : [Errno 111] Connection refused) exception中的消息是 message : None: Max retries exceeded with url: /some_url/ (Caused by redirect) 我之所以包含它是因为它有额外的信息(caused by redirect) 。 正如我所说,我控制这个请求中涉及的两台服务器,所以我可以对其中一个和/或两个进行更改。 此外,错误似乎是间歇性的,因为它不会每次都发生。 潜在的相关信息 – 服务器A是运行Apache的Python服务器,服务器B是NodeJS服务器。 我不完全是一个Web服务器向导,除此之外,我不确定哪些信息是相关的。 有没有人确切知道这个错误意味着什么,或者如何去调查修复? 或者,有没有人知道哪个服务器可能是问题,提出请求的那个,还是接收的? 编辑:错误已经开始与我们的外部networking资源调用也发生。

Node.js HTTP:请求'结束'事件永远不会被调用

我有一个客户端发送数据块到我的node.js服务器。 我想听“结束”事件并检索累积的请求主体。 这是我的代码: app.post('/users', function(req, res){ req.on('end', function() { // WHY IS THIS NEVER FIRED? console.log(req.body); res.send({ "status": "ok" }); }); }); 问题是,“结束”事件永远不会被解雇。 有人知道为什么 而且,如果我这样做,请求的身体是否会成为所有身体块的累积体?

使用Android发送HTTP发布请求

我一直在尝试从SO和其他站点上的大量示例中学习,但我无法弄清楚为什么我一起入侵的例子不起作用。 我正在构build一个小型概念validation应用程序来识别语音,并将其作为POST请求发送到node.js服务器。 我已经确认的语音识别工作,并且服务器正在接收来自常规浏览器访问的连接,所以我导致相信这个问题是在应用程序本身。 我是否缺less一些小而愚蠢的东西? 没有错误被抛出,但服务器永远不会识别连接。 提前感谢您的任何build议或帮助。 相关的Java(主要活动和必要的AsyncTask): protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1001) { if (resultCode == RESULT_OK) { ArrayList<String> textMatchList = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); if (!textMatchList.isEmpty()) { String topMatch = textMatchList.get(0); PostTask pt = new PostTask(); pt.execute(topMatch); } } } } private class PostTask extends AsyncTask<String, String, String> { […]

node.js http服务器,检测客户端何时断开

我使用express和node.js作为http服务器。 我存储响应对象,这样我就可以将事件传送到该通道上的客户端。 有没有办法检测客户端何时断开连接? 当我杀死我的客户端,我仍然可以写入响应对象,而不会得到任何forms的exception/错误。 它看起来像服务保持底层TCP通道打开,只要我不断写入响应对象。

简单的node.js代理通过http服务器http请求

尝试通过制作一个简单的http代理服务器来了解关于node.js的更多信息。 使用场景很简单:用户 – >代理 – >服务器 – >代理 – >用户 下面的代码工作,直到最后一步。 无法findpipe道连接器的输出回到用户的方式。 #!/usr/bin/env node var url = require('url'), http = require('http'), acceptor = http.createServer().listen(3128); acceptor.on('request', function(request, response) { console.log('request ' + request.url); request.pause(); var options = url.parse(request.url); options.headers = request.headers; options.method = request.method; options.agent = false; var connector = http.request(options); request.pipe(connector); request.resume(); // connector.pipe(response); // […]