javascript - 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 请求中获取响应似乎不起作用。我愿意接受任何建议!
提前谢谢你。
解决方案
为了回答我的问题,我不知道没有启用 COR 会导致这种行为 - 浏览器会显示请求正在通过,可以在开发人员工具中看到响应,但无法打印到控制台。感谢 Jaromanda 帮助我意识到这一点。
推荐阅读
- python-3.x - 我可以从 python3 中的 datetime.today().strftime('%Y%m%d') 获取 timedelta(days=180) 吗?
- java - 如何在片段中基于点击监听器的第二个活动中管理新的 FrameLayout?
- php - php - 在 URL 中显示 ID
- swift - 带有 Dexcom API 的 OAuthSwift:获取输出帧失败,状态 8196
- php - 如何在我的 PHP 代码中调用 AWS lambda 函数来发送电子邮件
- powershell - 如果 Else 语句在使用 PowerShell 的 Else 端不起作用
- amazon-web-services - Asp.Net SignalR 不适用于具有 2 个实例的负载均衡器(AWS ELB)
- ansible - 尝试响应双重确认提示时 ios_command 中止
- wpf - Listview DataTemplate inter UserControl 无法绑定
- javascript - 枢轴计算器问题让它太有用了,变量有问题