首页 > 解决方案 > XMLHttpRequest 获取请求响应为空,即使有回调

问题描述

我正在尝试从使用 JavaScript 中的 XMLHttpRequest 对象创建的 Node 应用程序中获取响应。我用来执行此操作的代码如下:

var get = function()
{       
    var http = new XMLHttpRequest({mozSystem: true});
    http.onreadystatechange = function() {
    if (http.status === 200) {
        console.log(http.responseText);
      }
    }
    http.open("GET", "http://127.0.0.1:3000", true);
    http.setRequestHeader("Content-Type", "text/plain");
    http.send();    
}

Node应用程序是:

const http = require('http');
const fs = require('fs');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => 
{
    let body = [];
    req.on('data', (chunk) =>
    {  
        body.push(chunk);
    }).on('end', () => 
    {
        body = Buffer.concat(body).toString();
        if(req.method === "GET")
        {
            console.log("GET"); 
        }
    res.setHeader('Content-Type', 'text/plain');
    res.end("Hello World");
  })
});

但是,没有打印任何内容。我在 Chrome 和 Mozilla 中打开了开发者工具,可以看到状态为 200,并且响应列在 Ajax 调用的响应下方 - 清楚地显示“Hello World”。

我在本地做这一切,作为学校的节点演示。我的应用程序能够很好地处理发布请求 - 但从 GET 请求中获取响应似乎不起作用。我愿意接受任何建议!

提前谢谢你。

标签: javascriptnode.jshttpget

解决方案


为了回答我的问题,我不知道没有启用 COR 会导致这种行为 - 浏览器会显示请求正在通过,可以在开发人员工具中看到响应,但无法打印到控制台。感谢 Jaromanda 帮助我意识到这一点。


推荐阅读