我有一个简单的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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句