gpt4 book ai didi

javascript - 带有 node.js 的 http 请求在发送后无法设置 header

转载 作者:搜寻专家 更新时间:2023-10-31 23:42:56 25 4
gpt4 key购买 nike

我尝试使用 https/http 请求服务器并将结果显示在网页中。它作为服务器上的脚本工作,但失败,我用 get 请求返回结果。

var express = require('express');
var app = express();
var port = 1337;
var https = require('https');

app.get('/', function(req, response, next) {
doRequest(function(resp){
response.send("response" + resp); // FAIL ON REQUEST !
});
});
function doRequest(callback){

var post_data"query=test";
var post_options = {
host: 'mySite.com',
path: '/path/to/source',
method: 'POST',
secureProtocol: 'SSLv3_method'
};

// Set up the request
var post_req = https.request(post_options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
callback(chunk);
});
});

// post the data
post_req.write(post_data);
post_req.end();
}

doRequest(console.log); // WORKS !

我收到这个错误:

http.js:707
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:707:11)
at ServerResponse.res.set.res.header (/node_modules/express/lib/response.js:564:10)
at ServerResponse.res.contentType.res.type (/node_modules/express/lib/response.js:434:15)
at ServerResponse.res.send (/node_modules/express/lib/response.js:114:43)

我使用 Node v0.10.15 的 Express 4。

最佳答案

JavaScript 是异步的

// post the data
post_req.write(post_data);
post_req.end();

很可能会在

之前执行
// Set up the request
var post_req = https.request(post_options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
callback(chunk);
});
});

已完成,导致您的逻辑失败。

关于javascript - 带有 node.js 的 http 请求在发送后无法设置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23921339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com