Articles of xmlhttprequest

NodeJS / ExpressJS在1个stream中发送大量数据的响应

我正在使用原生mongo rest api来创build应用程序,其中Node返回约400K的json。 我使用以下方法来请求mongo的本地API,并返回结果: http.request(options, function(req) { req.on('data', function(data) { console.log(data,data.rows); response.send( 200, data ); } ); } ) .on('error', function(error) { console.log('error\t',error); response.send(500, error); } ) .end(); 当我通过curl命中http://localhost:8001/api/testdata ,响应是正确的(从console.log输出到节点的控制台以及curl收到的是什么)。 但是当我通过应用程序中的ajax打开它时,stream被中断了,即使输出到Node的控制台(Terminal)的数据也很奇怪:它具有多个EOF,并且chrome开发工具中的Network> response响应结束于第一个EOF。 另一个奇怪的事情是: data看起来像: { "offset": 0, "rows": [ … ] } 但在节点和客户端(angular)都不能引用data.rows(它返回undefined)。 typeof data返回[object Object] 。 编辑 curl和angular(由Node报告)的请求标头是: req.headers: { 'x-action': '', 'x-ns': 'test.headends', […]

节点js / Angular js – 小心:临时标题显示

这是我的Angular js代码: $http({ method:'POST', withCredential:true, url:$scope.config.app_ws+'auth/signup', data:{user:$scope.auth} }).success(function(status, response){ console.log(response); }).error(function(status, response){ alert(response+'Bummer 🙁 , an error occured plese retry later. '); }); 这是我的Node.js片后端: var allow_cross_domain= function(req, res, next) { res.header('X-Powered-By', 'hey.heyssssssss.org'); var oneof = false; if(req.headers.origin) { res.header('Access-Control-Allow-Origin', req.headers.origin); oneof = true; } if(req.headers['access-control-request-method']) { res.header('Access-Control-Allow-Methods', req.headers['access-control-request-method']); oneof = true; } if(req.headers['access-control-request-headers']) { res.header('Access-Control-Allow-Headers', […]

传递xhr onload函数的全局值

在我创build的应用程序中我有下面的XMLHttpRequest,我试图将xhr.onload()的data结果传递到在同一个父函数内创build的数组中。 var url = 'http://api.soundcloud.com/resolve.json?'+resource+'&'+CLIENT_ID; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.onload = function(){ var data = JSON.parse(xhr.responseText); console.log(data.permalink_url); }; xhr.send(); 在这个下面我有一个数组的构build块,我试图将数据的结果传递到轨道string。 var metadata = { id: val, title: title, url: posturl, track: data.permalink_url }; 到目前为止,我所尝试过的一切都会返回undefined或者function ,现在我完全没有想法了。

使用XMLHttpRequest将多个file upload到Express.js 3.5服务器

我正在尝试在JavaScript中使用原生FileAPI构buildfile upload器,并且我想通过XMLHttpRequest(不带jQuery)将file upload到使用Express.js的Node.js服务器。 文件阅读部分工作正常,当我上传文件没有XMLHttpRequest它完美的作品(文件在Express.js req.files )。 问题是通过AJAX上传: req.files总是空的。 下面是一些代码: 表格: <form action="http://localhost:3000/upload" method="POST" enctype="multipart/form-data" name="form"> <input type="file" name="uploads" id="files" multiple="multiple"> <input type="submit" name="submit" value="submit"> </form> 前端的上传部分(在文件[0] .data中是一个文件 – 不是一个数组或东西): function uploadFiles(files) { var xhr = new XMLHttpRequest(); xhr.submittedData = files; // Array of objects with files included. But it neither works with an array of […]

node.js https请求和XMLHttpRequest有什么区别?

通过node.js模块和XMLHttpRequest发送的HTTPS请求有什么区别? 我试图发送一个HTTPS GET请求到亚马逊aws从javascript(XMLHttpRequest)得到一个安全令牌,它总是失败与“原始http:// my_ip访问控制,允许来源不允许,但如果我通过一个node.js模块发送相同的HTTPS GET请求,它工作正常。 我很困惑这个,因为如果服务器支持CORS,任何来自任何地方的请求都会失败,但是它通过node.js,而不是通过XMLHttpRequest。 这个失败 var url_ = "https://sts.amazonaws.com/?Action=GetSessionToken" + "&DurationSeconds=3600" + "&AWSAccessKeyId=XXXXXXXXXXXXXXX" + "&Version=2011-06-15" + "&Timestamp=" + encode(timestamp) + "&Signature=" + encode(hash) + "&SignatureVersion=2&SignatureMethod=HmacSHA256"; // Simple GET request $.get(url_, function(data) { alert("response: " + data); }); 这工作 var https = require('https'); var options = { host : 'sts.amazonaws.com', method : 'GET', path […]

Socket.io访问控制允许=来自远程站点的原始错误

我正尝试从另一个站点访问一个socket.io服务器。 它工作了几个星期,但现在我不断收到以下错误。 从heroku服务器访问节点上的服务器时会发生这种情况。 错误是: XMLHttpRequest cannot load http://site2.nodester.com/socket.io/xhr-polling//1311008802545. Origin http://site1.heroku.com is not allowed by Access-Control-Allow-Origin. Resource interpreted as Script but transferred with MIME type text/plain. Uncaught SyntaxError: Unexpected identifier 以下是我如何连接到套接字: socket = new io.Socket( 'site2.nodester.com', {port: 80, rememberTransport: false} ); 这里是服务器代码: // requires server = http.createServer(function(req, res){ // server stuffs }), server.listen(8362); var io = […]

WebSockets vs XHR的大量数据

我在NodeJS上运行SocketIO,我并不关心广泛的浏览器支持,因为它是我的宠物项目,我希望利用新技术的所有function来简化开发。 我关心的是如何从服务器向客户端发送大量的JSON数据。 那么,这些数量并不像video或图像二进制数据那么大,我认为每个请求不会超过几百KB。 我看到的两个场景是: 通过WebSockets从服务器发送一个通知给客户端,一些数据应该被获取。 然后客户端代码运行一个普通的XHR请求到服务器,并通过XHR获取一些数据。 通过WebSockets从服务器发送整个数据集到客户端。 在这种情况下,我不需要运行任何额外的请求 – 我只是通过WebSockets获取所有的数据。 我看到了Meteor.js的第一个例子,所以我想知道它的原因。 请分享您的意见。

Node.js – 使用XHR强大的上传

我尝试实现一个简单的XHR上传到Node.js(通过Formidable )。 问题是,如果我设置 xhr.setRequestHeader("Content-Type", "multipart/form-data"); 节点给我错误: Error: bad content-type header, no multipart boundary 如果我将边界设置为随机string,则不会发生任何事情 浏览器挂在POST上并等待服务器响应。 重点是,如果我使用强大的常规同步POST一切工作正常。 任何人都试图用XHR上传使用Formidable ?

如何使用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.request中发布XML数据

我想通过使用http.request Node.js提交一个XML请求到一个Web服务。 这是我的代码。 我的问题是,而不是data=1我想发布到服务的XML。 http.request({ host: 'service.x.yyy.x', port: 80, path: "/a.asmx?data=1", method: 'POST' }, function(resp) { console.log(resp.statusCode); if(resp.statusCode) { resp.on('data', function (chunk) { console.log(chunk); str += chunk; }); resp.on('end', function (chunk) { console.log(str); }); } }).end(); 何要这样做?