繁体   English   中英

如何向本地托管的node.js服务器发出jQuery请求?

[英]How to make a jQuery request to a locally hosted node.js server?

我有一个简单的node.js服务器保存在一个名为server.js的文件中,其代码如下:

var http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8010);

我通过执行以下命令在命令行中本地运行(安装了node.js)

node server.js

然后,如果我在浏览器(google chrome)中使用URL my.local.IP.address:8010访问此文件,它将成功显示hello world。

我还创建了一个网页,该网页将在加载页面后立即执行此jQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>    
    $(document).ready(function(){
        $.get("http://my.local.IP.address:8010/", function(){
            alert("Success");
        }).fail(function(err){
            alert("Failed");
            alert(JSON.stringify(err));
        });
    });
</script>

当我在浏览器中打开此html文件时,它始终会创建一个警告框,提示失败,然后将这个字符串化的JSON对象作为错误(我已对其进行了格式化,因此更易于阅读):

{
"readyState": 0,
"status" : 0,
"statusText": "error"
}

无论在node.js服务器在本地运行时尝试了多少次,这种情况都会发生。 我还尝试制作一个自己完成的异步XMLHTTP请求函数,但这也不起作用。

我知道我使jQuery和XMLHTTP函数都能正常工作,因为如果我在URL https://httpbin.org/get上调用函数,它将成功返回。

关于我哪里出了问题的任何想法?

这是一个跨域问题。 浏览器认为您的页面不属于http:// localhost:8081服务器。 您需要按以下步骤更改服务器代码才能使其正常工作。

http.createServer(function (req, res) {
    res.setHeader("Access-Control-Allow-Origin", "*");
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8010);

我想这可能是跨域问题,因为您在呼叫中使用IP地址,而浏览器URL上的localhost:8010则访问您的站点。 这是ajax请求常见的问题,与Node.js无关

尝试使用与目标网址相同的URL访问该网站。

看到与跨域类似的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM