Articles of http

如何通过JavaScript下载PDF文件?

我的JavaScript代码向我的node.js服务器发出以下AJAX请求: var url = '/node/download'; var downloadRequest = new goog.net.XhrIo(); downloadRequest.headers.set('content-type', 'application/json'); downloadRequest.send(url); 我的node.js服务器在节点上创build一个pdf,并通过下面的代码将pdf传回客户端: var filestream = fs.createReadStream(pdfpath); res.writeHead(200, { 'Content-disposition': 'attachment; filename=' + filename, "Content-Type":"application/pdf","Content-Transfer-Encoding": "binary"}); filestream.on('data', function(chunk) { res.write(chunk); }); filestream.on('end', function() { res.end(); }); 但是现在我在如何在javascript客户端接收这个响应时遇到了麻烦,所以下载提示会打开,允许用户下载并保存pdf文件。 请帮忙! 感谢提前! PS Plz也build议任何更好的方法来实现我的节点的代码(如果有的话) 编辑:一个可能的解决办法是发送我的要求是这样的: window.location.assign('/node/download'); 这样我得到下载提示,一切正常,除了牺牲了产品的asynchronous性质。 有没有解决这个问题,这样我还可以保持asynchronous?

访问私人http服务器

我构build了一个Nodejs HTTP服务器。 它在localhost:3000上运行。 从局域网之外,如何向私有HTTP服务器发出请求? 手动弄乱路由器不是一个选项; 过程应该是自动的。 我看了各种技术 – 我很困惑: 将本地端口映射到外部IP地址( node-nat-pmp ) HTTP隧道( 节点隧道 ) SOCKS( shadowsocks-nodejs ) 请求头中的CONNECT方法 看来,一切都是build立在一个客户端通过防火墙隧道,我想通过防火墙和私人服务器隧道的请求。 或者只是在外部IP上运行localhost端口。 任何帮助,将不胜感激。 困惑。

Nodejs请求模块返回不正确的statusCode

我试图使用请求模块来获取HTTP状态码。 但是有时候这是错误的 例如: var request = require('request'); var requestSettings = { method: 'HEAD', url: 'http://stackoverflow.com/help' }; request(requestSettings, function(error, response, body) { console.log(response.statusCode); }); 此代码返回404(不如预期的200)。 为什么会这样呢? 谢谢。

Node.js直接请求带有选项(http或https)的URL

我想我错过了有关http和https请求的内容 我有一个包含URL的variables,例如: http(s)://website.com/a/b/file.html 我想知道是否有一个简单的方法来请求这个URI来获取数据 要制作一个http(s)请求,这里是我现在要做的: testingURL是http还是https来发出适当的请求 删除http(s)://部分并将结果放入一个variables中(如果我在主机名中指定http或https,则出现错误) 将主机名与path: website.com和`/a/b/file.html分开 把这个variables放在选项对象中 这是必须的还是他们更容易解决scheme,不涉及获取主机名和path,并testing该网站是在http或https? 编辑:我不能使用http.get,因为我需要把一些特定的选项

node.js – 来自多个调用的streamhttp响应

在我的快速应用程序中,我想对API进行多个调用,并将每个响应都传回客户端,而不是等待所有响应。 例如,如果我请求在旧金山,伯克利和帕洛阿尔托同时进餐,我不应该等待所有的回复,并且能够在他们可用的时候stream出。 我将如何做到这一点?

监听主进程上的HTTP通信,处理subprocess上的连接?

我正在寻找一种方法来让套接字监听主进程上的HTTP请求,然后使用process.send()将所有传入连接和请求数据传递给subprocess,并在subprocess中处理HTTP请求。 但是,我无法find一种方法来将传递的连接和请求数据附加到subprocess中的HTTP服务器,而无需通过.listen()套接字初始化服务器。 那么,是否有可能使用HTTP服务器来处理从另一个进程传入的连接呢? 任何非公开的API解决scheme也将做(尽pipeJavaScript的希望尽pipe)。 我想我可以初始化服务器来侦听一些虚拟套接字,然后popup传入的连接,但这似乎并不理想。 传入监听套接字或使用群集或反向代理也不是最佳的在我的情况。

查看IntelliJ Ultimate 12中的node.js api文档

我无法得到node.js api文档出现在文档窗口/popup(ctrl + q)javadoc通常将为一个java项目。 对于这个代码: var http = require('http'); 我可以在popuprequire中看到require的文档… …但不是http … 有趣的是, http. 通过function签名显示正确的自动完成选项。 我在用: IntelliJ IDEA Ultimate 12.1.6 最新的JetBrains NodeJS插件(129.714) 作为库加载的“Node.js v0.10.21核心模块”(源自tar.gz) http://nodejs.org/docs/v0.10.21/api/作为文档源加载 Node.js v0.10.21核心模块,HTML,HTML 5 / EcmaScript 5和Node.js Globals库以及(两个文件)项目中的所有后代文件。 我已经读过这个官方的博客文章,但没有任何成功。 作为参考,我正在尝试遵循Node Beginner教程 。 编辑:理想情况下,像api文档的http条目出现在popup窗口。

在通过.sendFile()响应之前,我应该检查文件是否存在?

说我在我的Express.js应用程序中有这个路由处理程序: app.get('/files/:name', function (req, res) { res.sendfile('path/to/files/' + req.params.name + '.html'); }); 这个path通过Ajax在我的网站上使用。 我不知道是否应该防止服务器上不存在具有所需名称的文件的情况,在这种情况下,服务器将返回404响应。 我可以用这个工作,即在浏览器中检测404,并相应地采取行动(例如向访问者显示一条消息)。 但是,我不确定这是否是一个好方法。 在这里使用404响应是否可以,或者我应该尽可能地避免404响应。 (例如,如果服务器上存在具有所请求名称的文件,并且只有使用.sendFile()如果存在)。 我担心执行手动检查只会减慢速度,因为.sendFile()已经有内置的检查(即可以避免这种检查,而是在浏览器中检测到404响应,这正是我正在做的现在,它工作正常)。

如何在nodejs urlparsing中包含端口

那么…我有一个非常简单的用例。 我有两个string: var a = 'localhost:3000', b = '/whatever/; // this can also be whatever/ or /whatever 我需要parsing url.parse(a, b); // so that it takes care of dealing with slashes 但是我明白了 localhost:/whatever/ instead of localhost:3000/whatever/ 任何指针? 谢谢!

为什么我的Goodreads API的请求返回undefined?

以下是我如何在NPM中使用请求模块的简短示例。 它返回undefined,我相当肯定我正确使用xml2js。 我是否滥用了请求模块中的“表单”选项将值传递给Goodreads API? 谢谢! var req = require('request'); var resp = req.get('https://www.goodreads.com/book/isbn_to_id', {form:{ 'key' : '*****************', 'isbn' : '9780060513030' }}); var parseString = require('xml2js').parseString; parseString(resp, function (err, result) { console.dir(result); });