[英]NodeJS http server response headers are blank when headers are set for a request
[英]Nodejs HTTP request, cant alter response headers
您好我正在做一個請求,然后在響應時我試圖添加come標頭,但出現以下錯誤:
Server listening on port 80 [Request]: test.domain.com//web/guest/retail-betting (GET) D:\Development\xampp\htdocs\lab\tests\12\proxy\index.js:19
resp.setHeader("Access-Control-Allow-Origin", "*");
^
TypeError: resp.setHeader is not a function
at ClientRequest.<anonymous> (D:\Development\xampp\htdocs\lab\tests\12\proxy\index.js:19:14)
at ClientRequest.g (events.js:291:16)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:188:7)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:473:21)
at HTTPParser.parserOnHeadersComplete (_http_common.js:99:23)
at Socket.socketOnData (_http_client.js:362:20)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
這里是代碼示例:
const http = require("http");
const clear = require("clear");
const server = http.createServer();
server.on('request', function(req, res) {
var options = {
host: HOST,
path: req.url,
method: req.method
};
console.log("[Request]:", HOST + "/" + options.path, "(" + options.method.toUpperCase() + ")");
var connector = http.request(options, function(resp) {
resp.setHeader("Access-Control-Allow-Origin", "*");
resp.setHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
resp.setHeader("Access-Control-Allow-Headers", "Content-Type");
console.log("===============[Response Headers]===============");
console.log(JSON.stringify(resp.headers, null, 4), "\n");
resp.pipe(res);
});
req.pipe(connector);
});
server.listen(PORT);
clear();
console.log("Server listening on port", PORT);
您不能使用resp
更改請求標頭,因為該請求已經結束-您必須為此使用res
(使用變量名)。
這是因為resp
是您從某個外部服務獲得的響應,而res
是您正在發送的響應,作為對您的服務從其他人獲得的請求的響應。
換句話說,當您充當客戶時,您就是在發出請求並得到響應。 響應頭已設置,您不能更改它們。 但是,當您充當服務器時,您會收到一個請求,然后發送一個響應-包括可以定義自己的標頭和正文。
看到:
您無法向響應添加標頭值,響應標頭來自服務器。 如果要添加跨源標頭,則必須將其添加到Web應用程序中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.