[英]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.