向远程 node.js 服务器发送 ajax 请求

Posted

技术标签:

【中文标题】向远程 node.js 服务器发送 ajax 请求【英文标题】:Send ajax request to remote node.js server 【发布时间】:2018-01-31 16:55:52 【问题描述】:

我有简单的 nodejs 服务器(包括 CORS):

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = 8001;
http.listen(port,function () 
    console.log('listening on:'+ port);
);
app.use(function (req, res, next) 
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8000');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    res.setHeader('Access-Control-Allow-Credentials', true);
    next();
);
app.post('/getSockets', function (req,res,next) 
   console.log(req.body);
);

简单的ajax请求

 $.ajax(
                type: "POST",
                url: "http://localhost:8001/getSockets",
                data: "Hello world",
                success: function (data, textStatus, XMLHttpRequest) 
                    console.log(data);
                    console.log("success!");
                ,
                error: function(XMLHttpRequest, textStatus, errorThrown) 
                    console.log(XMLHttpRequest.status);
                
            );

但是我遇到了一个错误 404,找不到 localhost:8001/getSockets

【问题讨论】:

尝试`var http = require('http').createServer(app);'在节点 js 服务器代码中 【参考方案1】:

404 错误表示 URL 不存在或无法访问

改变这一行:

res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8000');

到这里:

res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8001');

【讨论】:

帮助太多了【参考方案2】:

您只允许 ajax 请求访问端口 8000 上的资源,您应该将其更改为 8001 或不指定端口。

res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8000');

另请参阅 using CORS with ports

【讨论】:

以上是关于向远程 node.js 服务器发送 ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章

本地html向远程的服务器发送aJax请求的问题

node.js_POST服务--配合ajax通讯

如何将 JQuery AJAX 请求中的数据发送到 Node.js 服务器

本地html向远程的服务器发送aJax请求的问题

从 Swift 4 向 Node.js 发送 post 请求

向 Gmail API 发送消息的 Node.js POST 请求