Tag: http headers

Express.js:已在REST API上发送的标头

我用Node.js和Express.js创build了一个REST API。 在一个URL上,当我更多地调用这个URL时,我得到一个错误信息: 发送json错误:[错误:发送后无法设置标头。] 所以,我添加了一个try catch来捕获错误。 但奇怪的是,这工作很好。 错误被抓住,我的回应被发送: try { res.status(200).json(user); } catch (e) { console.log('send json error:',e); } res.on('finish', function() { console.log('All is ok, response sent with user datas'); }); 我认为这不是很干净的解决scheme。 所以我想知道为什么这个错误是抛出,我怎么能为这个问题写一个干净的解决scheme?

获取在Express中请求路由的域

如果我有这个客户端应用程序运行在端口3000上,并且在我的API中build立在ExpressJS之上,在端口8080上运行,我怎么知道请求是在localhost:3000上发起的呢? 我听说有人在用: req.get('host') //or origin req.headers.host //or origin origin不存在,主机返回localhost:8080 ,即服务器端。 我想要客户的地址。 为什么在ExpressJS上获取这些信息非常困难? 任何人都知道我该怎么做?

在node.js中parsing的JSON数据在控制台中显示为undefined

在node.js中parsing的JSON数据在控制台中显示为undefined .. 这里是HTML代码: var jsonObjects = [{id:1, name:"amit"}]; jQuery.ajax({ url: 'http://localhost:8081', type: "POST", data: {"id":"1", "name":"amit"}, dataType: "json", success: function(result) { alert("done") } }); 这里是Nodejs代码: http.createServer(function (request, response) { response.writeHead(200, {"Content-Type":"text/plain"}); var urlObj = JSON.stringify(response.data, true); console.log(urlObj) response.end(); }).listen(8081);

在ExpressJS中接受CORS请求的自定义HttpHeaders

我有一个ExpressJS应用程序通过REST暴露一些数据。 当我从同一个来源访问REST接口或使用curl时,一切正常,并且我的自定义http头被发送到我的路由。 但是,当我尝试从另一个来源访问REST接口时,我的标题被删除。 expressjsconfiguration看起来像这样 app.use(express.bodyParser()); var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET'); res.header('Access-Control-Allow-Headers', 'Accept'); if ('OPTIONS' == req.method) { res.send(200); } else { next(); } }; app.all('/',allowCrossDomain); app.get('/foo', function(req,res){ console.dir(req.headers); }); 我尝试访问使用下面的JS代码的API var properties = { url: 'http://localhost:3001/foo?callback=?, type: 'GET', dataType: 'jsonp', headers: { "x-foo" : "FooBar"} }; $.ajax(properties).done(onSuccess).fail(function(r, s, e) […]

Chrome不会渲染分块的json响应

我想做一个stream式端点,不断发送一个json对象。 我曾尝试使用块传输编码,并能成功地使所有的浏览器(铬,火狐,Safari)呈现从服务器发送的数据,如果是文本/ HTML或文本/纯文本。 但是,当我使用application / json作为内容types时,它在chrome上不起作用。 代码如下: var http = require('http'); http.createServer(function(request, response){ response.setHeader('Connection', 'Transfer-Encoding'); response.setHeader('Transfer-Encoding', 'chunked'); response.setHeader('Cache-Control', 'no-cache'); // response.setHeader('Content-Type', 'application/json'); response.setHeader('Content-Type', 'text/html'); setInterval(function(){ response.write('test </br>'); // response.write('{"test": "test"}'); }, 10); }).listen(8000); 上面的代码正常工作,但不能使它与应用程序/ jsontypes。 我错过了什么吗?

我怎么能得到我实际发送的HTTP请求头在node.js http请求

这是我的简化代码: var request = http.request(options); request.on('response', function( res ) { console.log("response received"); }); request.end(); 我想打印出实际发送的请求标题(我假设该节点自己添加一些)我怎样才能得到它们?

如何将FormData从Angular 2发送到nodejs?

我正在使用这个代码: var creds = "username=" + 'user' + "&password=" + 'password'; var headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded'); http.post('http://localhost:3000/', creds, { headers : headers }) .map(res => res.json()) .subscribe( data => this.logData(data), err => this.logError(err), () => console.log('Quote Complete') ); NodeJs在this.request.body上获得了json {username:'user',password:'password'}。 但我需要JSON像{字段:{用户名:'用户',密码:'密码'}}

我不能通过将这些文件传送到node.jsstream中来保存http头文件

var fsHeaders = fs.createWriteStream('headers.html', 'utf-8'); var getHeaders = request('http://google.com', {method: 'HEAD'}, function (error, response, body) { if (error || response.statusCode !== 200) { return res.redirect('/'); } if (!error && response.statusCode == 200) { var tester = response.body; console.log(tester + 'response.body is EMPTY… so the headers are stored not in the "body"… \n'); var targetHeaders = […]

如何使用Restler Rest客户端库而不是Angular / HTTP

我使用Restler库作为IONIC项目上的Rest客户端来使用Notejs API,目标是使用Restler而不是Angularjs的Http服务: 我试过这种方式: let options = { headers: {'Authorization':[this.token]}}; restler.get('http://localhost:8083/api/auth/protected', JSON.stringify(options ) ).on('complete', function(result, response) { if (result instanceof Error) { reject(result); } else { resolve(result); } }); 这种方式返回:结果“未经授权” angular度/ Http方式: let headers = new Headers(); headers.append('Authorization', this.token); this.http.get('http://localhost:8083/api/auth/protected', {headers: headers}) .subscribe(res => { resolve(res); }, (err) => { reject(err); }); 并返回: {"_body":"{\"content\":\"Success\"}","status":200,"ok":true,"statusText":"OK","headers":{"Content-Type":["application/json; charset=utf-8"]},"type":2,"url":"http://localhost:8083/api/auth/protected"} 我已经尝试过Restler […]

如何用express-http-proxy修改响应头

背景 我正在使用express-http-proxy来代理我的SPA(单页面应用程序)和CouchDB实例之间的一些请求。 我正在做这个代理每个调用的基础上,而不是创build一个代理服务器(这将是重要的一刻)。 当前使用的例子 app.use(`some/url`, proxy(dburl, { forwardPath: req => {return 'some/url'+require('url').parse(req.url).path;} }) ); 这意味着我不使用httpProxy.createServer 。 我想发送一些文本数据和我的回应作为标题的片段。 看完文档后,我得出结论,我想要使用intercept 。 不幸的是,我还没有完全掌握如何使用它,到目前为止,我发现的唯一 相关 问题似乎是基于httpProxy.createServer ,它出现了(从我的有限理解)以不同的方式工作。 我们正在使用个人请求代理,因为我们希望代理不同的请求到不同的微服务,并发现这是最简单的方式(我们知道和当时)这样做。 问题 给定代码 const text = 'asdf'; app.use(`some/url`, proxy(dburl, { forwardPath: req => {return 'some/url'+require('url').parse(req.url).path;}, intercept: function(rsp, data, req, res, callback) { //SUSPECT LOCATION } }) ); 在SUSPECT LOCATION有没有一些代码可以让我把text放在最终响应头上,而不会影响(当前正在运行的)代理? 补充笔记 一般来说,标题和networking请求对我来说并不是很熟悉,如果答案似乎不言自明,我很抱歉。 附加点指向资源的链接,有助于解释使用此库进行代理的更好的一点,类似的代理库或基本技术,这将清楚如何使用此库进行代理。 […]