Tag: http

如何在HTTP中发送UpperCase头

标准说头是不区分大小写的。 Ruby和node都强制小写头。 我们正在使用一个外部的服务器程序,期望头文件“AuthToken”是区分大小写的,使用.NET框架,显然两者都不遵循标准。 在这种情况下,我们需要头文件。

NodeJS – 使用Core NodeJS和最初的Node解决scheme,通过进度条上传文件

Ryan Dahl曾经说过他发明了NodeJS来解决file upload进度条问题( https://youtu.be/SAc0vQCC6UQ )。 使用Node于2009年推出的技术时,所以在Express和更高级的客户端JavaScript库自动告诉你进度更新之前,NodeJS究竟是如何解决这个问题的呢? 现在试着只使用Core NodeJS,我理解了请求stream,我可以看看头文件,获得总文件大小,然后获取每个数据块的大小,告诉我完成百分比。 但是,我不明白如何将这些进度更新stream回到浏览器,因为浏览器似乎没有更新,直到request.end()。 我想再一次围绕NodeJS最初如何解决这个进度更新问题的问题进行讨论。 WebSocket还没有,所以你不能打开一个WebSocket连接到客户端,并将进度更新stream传回浏览器。 有没有使用另一个客户端JavaScript技术? 这是我迄今的尝试。 进度更新stream式传输到服务器端控制台,但浏览器仅在响应stream收到response.end()后才更新。 var http = require('http'); var fs = require('fs'); var server = http.createServer(function(request, response){ response.writeHead(200); if(request.method === 'GET'){ fs.createReadStream('filechooser.html').pipe(response); } else if(request.method === 'POST'){ var outputFile = fs.createWriteStream('output'); var total = request.headers['content-length']; var progress = 0; request.on('data', function(chunk){ progress += chunk.length; var […]

在不改变数据库的情况下testingPOST到API的策略

我正在使用jasmine-node来testing我的API,并且它对我的GET路由非常有用。 现在,但是,我需要testing一些职位,我不知道如何去改变我的数据库。 我以为有一个想法就是在每个规范的最后重置我改变的任何价值。 这是合理的还是有更好的方法去testingPOST请求到我的API?

在不同的端口之间共享Cookie

我有一个应用程序1(C#)托pipe在端口:8030和应用程序2(nodejs)托pipe在端口:3030。 两者都在本地主机上。 请求工作stream程如下: 浏览器向应用程序1发送请求 应用程序1发回一些cookie 稍后在浏览器上发送请求到应用程序2 ^问题是最后一步,cookies不包含在请求中。 我已经尝试/理解的事情: 我知道这是一个同源策略限制,并且由于不同的端口号,浏览器将它们视为不同的域。 在应用程序1(它使用System.Web.HttpCookie)我试图设置域为端口特定(“127.0.0.1:3030”),但似乎浏览器不接受或忽略它。 //c# code var testCookie1 = new HttpCookie("Test", "testValue"); testCookie1.Domain = "127.0.0.1:3030"; testCookie1.Path = "/"; testCookie1.Expires = DateTime.Now.AddDays(1); Response.SetCookie(testCookie1); var testCookie2 = new HttpCookie("Test2", "testValue2"); testCookie2.Domain = "127.0.0.1"; testCookie2.Path = "/"; testCookie2.Expires = DateTime.Now.AddDays(1); Response.SetCookie(testCookie2); 服务器发送一个附有端口号的cookie,但浏览器似乎忽略了它。 这里是我的阿贾克斯调用: var request = $.ajax({ url: 'http://127.0.0.1:3030/SomeTask', type: 'POST', crossDomain: […]

Node.js HTTP / NET – 连接和请求之间的区别

这个问题涉及到tcp / ip协议的一般概念,对此已经有了很好的答案,但是我希望能够深入了解一下node.js http / net库的特性。 节点http服务器实例允许为两种types的事件,“请求”事件和“连接”事件注册callback。 后者是从networking库inheritance而来的,同时还有一个字段“_connections”,用于统计服务器当前拥有的并发连接数。 现在,在我看来,由于http是一个无状态协议,所以请求和连接事件之间应该有一个1-1的对应关系,但事实并非如此。 当我在debugging器中通过一个简单的“hello-world”服务器时,发现请求事件的数量超过了连接事件的数量。 我还看到,即使没有对服务器进行调用(并且进程没有暂停),.connections字段也不会被清零。 为什么请求数量不等于连接数量,为什么服务器在最后一次调用response.end()(响应缓冲区应该被刷新并且连接结束?)之后保持连接打开状态? 另外,一个http服务器的并发连接数量(对keep-alive没有任何影响)如何高于1? 不要求基本上在sockets上排队,并逐个处理? 我明白Node是asynchronous的,但我也认为它是以单线程方式运行的。 提前致谢!

Flurl.Http自定义错误

我正在做一个客户端请求到服务器的应用程序。 服务器使用flurl.Http编写在node.js和.NET客户端。 当服务器上的请求失败时,创build自定义错误消息始终是有用的。 像这样的东西: request.respond(500, { message: "targetid is mandatory" }); 但是,这会在客户端调用FlurlHttpException,并且响应中的JSON信息会丢失。 如果从服务器收到非成功的响应代码,我怎样才能收到这个JSON信息?

如何确定Node.js服务器响应是否停止?

我怎样才能确定server.HttpResponse停止,而不听“结束”或“closures”事件? 我想要达到的是这样的: http.createServer(function (request, response) { var foo; // my event emitting object // … something compilated happens here … foo.onSomeEvent(function () { if (response.hasEnded) { // do something } }); });

Angular 2 SimpleChanges Object在第一个npm开始时抛出错误

在我的angular2应用程序中有一个组件,其中包含一个对象数组,将所选(单击)的对象传递给它的直接子组件。 这会显示更详细的数据。 我正在使用“SimpleChanges”function来观察这个子组件,如果给定的对象改变成另一个http请求来从数据库中获取相关的注释。 如果我尝试用npm构build它,我会得到一个错误,并说: app / displayEntry.component.ts(23,41):错误TS2339:types'SimpleChanges'上不存在属性'entry' 如果我只是评论这部分,启动npm,并最终把它放在那里,并保存它,没有问题了(没有错误,它的工作原理)。 我的问题是,是否有办法解决这个问题,这会导致什么麻烦,以后我不能预见,还是应该忽略它? 谢谢你的帮助 父组件: import { Component, OnInit } from '@angular/core'; import { entry } from './Objekte/entry'; import { entryService } from './entry.service' @Component({ templateUrl: 'app/Html_Templates/displayLastEntrys.template.html' }) export class displayLastEntrys implements OnInit{ public entrys : entry[]; private entryChoosen: boolean; private ChoosenEntry : entry; constructor ( private entryservice : […]

Nodejs http在超时或错误时重试

我试图在超时或错误时自动重试HTTP请求。 目前我的代码如下所示: var req = http.get(url, doStuff) .on('error', retry) .setTimeout(10000, retry); 但是,单个请求有时会触发“出错”和“超时”事件。 什么是更好的实施重试的方式?

端口3000在Express应用程序中的意义

我注意到Express.js应用程序的几乎所有示例都使用端口3000作为HTTP服务器的默认侦听端口。 这是因为它是一个很less使用的端口,或者是否有任何其他原因的端口号? 如果我想在本地机器上并排运行多个应用程序,使用像3000,3001,3002等端口是不是很好? (我理解,理想情况下,你会让系统分配端口,这只是一个简单的问题,为什么3000似乎是一个传统的任务。)