从http.post接收json有问题。 让我们清楚一点:这是我的组件文件: import {Component} from 'angular2/core' import {Http, HTTP_PROVIDERS, Headers} from 'angular2/http' @Component({ selector: 'login-form', template: ` <form (ngSubmit)="onSubmit()"> <button type="submit">Wyslij</button> </form> ` }) export class LoginFormComponent { constructor(public http: Http) { } onSubmit() { var headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded'); var data = JSON.stringify({ login: "zupa", }); this.http.post('http://localhost:8080/send', data, {headers: headers}) .subscribe(); } […]
我在我的node.js文件中有一个get调用和一个post调用,它们都使用与我在这些调用之外初始化为空string相同的variables。 在post调用中,我设置了variables,而在get调用中,我将该variables的值返回给我的客户端angularjs,请求该值。 在我的angularjs文件中,我先进行post调用,然后进行get调用,这意味着值应该被设置,并且应该在get调用被发出并返回时可用。 这是我正在做的事情: 的NodeJS var myUrl= ""; app.post('/post', function(req, res){ myUrl = res.url; }); app.get('/get, function(req, res){ res.json({result: myUrl}); }); AngularJS: var promise = $http.post('/post') .then(function(response){ return $http.get('/get'); }).then(function(response){ console.log(response.data.result); }); 我已经尝试了AngularJS诺言链调用,但它仍然无法正常工作。 我遇到的问题是,当我在第一轮请求中进行get调用时,即使post调用已经发出,urlvariables还没有被设置,所以get调用返回一个空string。 在第二轮请求中,get调用返回从第一个post调用中设置的值,依此类推。 关于为什么会发生这种情况的任何想法以及有关如何解决此问题的build议,以便get调用返回同一轮请求中的post调用中设置的值(get调用在调用完成后发出)? 我是相当新的NodeJS所以任何帮助表示赞赏!
如何使用express来提取传入请求的HTTP版本? 我需要像这样的东西: app.use('/', (req, res, next) => { req.getHttpVersion() // 'HTTP 1.0'/'HTTP 1.1'/'HTTP 2.0' });
我正在从nodechool的研讨会学习节点。 研讨会的名称是learnyounode,问题编号为8.HTTP COLLECT 。 问题是: 写一个执行HTTP GET请求的程序作为第一个命令行参数提供给你的URL。 从服务器收集所有数据(不只是第一个“数据”事件),然后写两行到控制台(标准输出)。 你写的第一行应该是一个整数,表示从服务器接收的字符数。 第二行应包含服务器发送的完整string。 我提交的答案如下。 var http = require('http'); var url = process.argv[2]; http.get(url,function(res){ var body = ''; res.on('error',function(err){ console.error(err); }) res.on('data',function(chunk){ body+=chunk.toString(); }); res.on('end',function(){ console.log(body.length); console.log(body); }); }); 而他们提供的答案是, var http = require('http') var bl = require('bl') http.get(process.argv[2], function (response) { response.pipe(bl(function (err, data) { if (err) return […]
注:这不是预检选项,它不是favicon或任何其他类似的。 这实际上是2 POSTS。 下面有一个截图,更清晰地显示出来。 我的规格/版本: macOS Sierra版本10.12.3 Chrome版本61.0.3128.0(官方版本)dev(64位) 节点v8.0.0 我有一个服务器,使用setTimeout等待10秒后才响应。 我有一个前端,使单个POST到服务器。 使用wireshark,我可以看到浏览器实际上做了2个POST,第二个在t + 5s。 服务器看到这两个POST并对两者都响应。 前端只能得到第二个POST的结果。 在下面的示例中,您将看到,获取实际需要15秒才能完成,而不是您希望从服务器中超时的10秒。 该呼叫是CORS,只有当服务器花费超过5秒的时间来响应时才会发生。 这里发生了什么,我该如何阻止它呢? 这是一个最小的复制: server.js(与节点一起运行) var http = require("http"); // A counter for the requests var counter = 0; var server = http.createServer(function(request, response) { // Closure to prevent the request number from changing with the counter. (function(requestNumber) { […]
我有兴趣为我的Node.js应用程序实现内容安全策略(CSP)。 Mozilla的文档相当有帮助,但我坚持如何启用违规报告 。 我了解他们如何工作的基本前提(浏览器向指定的URL发送POST请求以通知网站违规),但无法find在HTTP请求中find描述违规的JSON文档的位置。 也许这对于更熟悉HTTP规范的人来说是显而易见的。 看看CSP的W3C草案 ,我确定了JSON包含在称为“实体主体”的HTTP部分中。 我仍然不知道这个实体的目的是什么(我能find的唯一有用的页面是来自HTTP规范的)。 我假设它是请求的主体。 也许更重要的是,我找不到任何方法来检索实体的内容。 我想使用req.header('entity-body')但不起作用的实体不是一个HTTP头。 这是什么以及如何获取? (另外,我试图find一个关于如何在Node.js中实现CSP违规报告的教程,并没有发现任何东西。我确实find了一个PHP,但它并没有特别有用,引用了一个file_get_contents('php://input')我在Node.js / Express中没有类似的东西。) 任何援助将不胜感激。
我对编码一般都很陌生,所以如果这个问题应该比较明显,我会提前道歉。 以下是我期待做的事情,接下来我将发布迄今为止使用的代码。 我试图从一个网站获取gzip'd csv排名数据,并将其存储到一个数据库中,我正在开发一个家族网站。 一旦我弄明白了,我需要每5分钟抓一次数据。 抓住我已经能够完成的CSV数据,虽然它存储到一个文本文件,我需要将其存储到mongodb。 这是我的代码: var DB = require('../modules/db-settings.js'); var http = require('http'); var zlib = require('zlib'); var fs = require('fs'); var mongoose = require('mongoose'); var db = mongoose.createConnection(DB.host, DB.database, DB.port, {user: DB.user, pass: DB.password}); var request = http.get({ host: 'www.earthempires.com', path: '/ranks_feed?apicode=myapicode', port: 80, headers: { 'accept-encoding': 'gzip' } }); request.on('response', function(response) […]
可以说我有2个单独的gziped html块在内存中。 我可以发送chunk1 + chunk2到HTTP客户端吗? 任何浏览器是否支持这个? 或者没有办法做到这一点,我不得不gzip整个stream不个别块? 我想服务于客户端为例如chunk1 + chunk2和chunk2 + chunk1等(不同的顺序),但我不想压缩整个页面,我不想caching整个页面。 我想使用预压缩的caching块并发送它们。 nodejs代码(节点v0.10.7): // creating pre cached data buffers var zlib = require('zlib'); var chunk1, chunk2; zlib.gzip(new Buffer('test1'), function(err, data){ chunk1 = data; }); zlib.gzip(new Buffer('test2'), function(err, data){ chunk2 = data; }); var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain', 'Content-Encoding': […]
在Nodejs创build一个简单的Web服务器时,我Nodejs了一个奇怪的问题。 http服务器正常运行,并接受请求和响应。 但是,由于某种原因,它总是希望发送一种content-type:的text/plain 。 例如.js和.css文件总是以text/plain而通常应该以text/css或application/javascriptforms发送。 Chrome浏览器,我用来testing这个,总是抱怨资源的MIMEtypes: Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://localhost:3000/test.css". Resource interpreted as Script but transferred with MIME type text/plain: "http://localhost:3000/test-client.js". 这最终意味着什么是从未应用到页面的css 。 我已经添加了一些日志logging,看起来http响应正在发送正确的MIMEtypes。 我创build了一个我正在做的准系统版本。 希望有人能指出我编写的缺陷: test.js var http = require('http'), fs = require('fs'), url = require('url'), path = require('path'); var contentTypes = { '.html': 'text/html', '.css': "text/css", […]
我正在build立一个node.js服务器的网站。 我将如何跟踪login的用户(客户端),并将其ID保存在node.js服务器上?