我的代码如下
var http = require('http');
var host=...
var postData=({
//some fun stuff
})
var postOptions ={
host: host,
path: '/api/dostuff',
method: 'POST',
headers:{
AppID:"some stuff",
Authorization: "OAuth token",
"Content-Type":"application/json"
},
};
var req = http.request(postOptions, function(res){
var data = '';
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
//sanitize data stuff here
console.log("DATA HERE: "+ data);
return data;
});
});
req.write(JSON.stringify(postData));
req.end();
这是C#服务器的基本HTTP帖子。重要的是在标题中。我发送了应用ID(大约50个字符)和OAuth令牌(可以是数千个字符)。目前,服务器未设置为对Authorization标头执行任何操作。它甚至没有检查它是否在那里。
我的问题是,当我使用一些随机字符作为测试填充Authorization标头(或任何标头)时,帖子会成功。当我再次尝试使用完整的有效授权令牌(重申,很长)时,它失败了。无论我填充哪个标题部分,一旦它变得太满,就会返回错误。我收到的错误是“处理HTTP请求导致异常。请参阅此异常的'Response'属性返回的HTTP响应以获取详细信息”。我有点确定这是一个服务器问题,但当我尝试在Postman中运行完全相同的主体和标题时,我得到了有效的响应。
有没有人知道造成这种情况的原因是什么?
答案 0 :(得分:1)
有一个编译常量定义为80k for Node HTTP headers。你遇到了吗?我建议您查看OAuth令牌的标头大小。它不应该超过80k,而FWIW,甚至一个千字节对于OAuth来说都是巨大的......但无论如何......尝试转储标题的大小(以字节为单位)。