我正在用html和node.js编写一个简单的应用程序 这是我的第一个应用程序node.js,javascript和html
按节点我想发送一个json,当一个url被调用时(在我的本地机器中,下面的ip被称为:127.0.0.1/local)
当我呼叫该地址时,预期信息会正确返回浏览器。 我还在我的html页面中添加了一个按钮,需要调用上面的地址,以获取JSON数据。
我在here
尝试了接受答案的解决方案但是我收到了这个错误:
XMLHttpRequest无法加载http://127.0.0.1/local不允许使用Origin服务器 Access-Control-Allow-Origin node.js
有什么问题? 我认为提供的信息已经完成,但如果不是,请告诉我分享我的代码。
好的,我知道我需要解释我的确切目标并提供我的代码;
我正在开发Node.js的程序 我有一个mysql数据库,我想从db获取一些信息并在html页面上显示。我在我的数据库js文件上使用bookshelf,express,lodash,router,所以我通过调用从db获取数据
127.0.0.1:3002/local
我的html页面上有一个按钮;并且需要在用户触摸时获取信息。 我的html页面正在
上运行127.0.0.1:8080
所以我认为没有必要提供Access,db和html都在一台服务器上运行。
也许我的XMLHttpRequest调用db数据的解决方案不是一个正确的解决方案。我问的是它是否只是调用数据的唯一方式?
答案 0 :(得分:1)
您的页面和Json资源位于2个不同的端口(3002和8080)上。这是导致Access-Control-Allow-Origin错误的原因。它与浏览器的安全性相反,可以防止跨脚本编写。
在ajax中,在正常情况下,您应该具有相同的页面和资源来源,并且相同的源策略依赖于主机名和端口。
您的解决方案就是在同一端口上访问您的主页面和JSON资源。
使用XMLHttpRequest访问它没有问题,这是正确的方法,并且被许多框架使用,例如角度。
答案 1 :(得分:0)
您是否尝试在节点js文件中添加标头。如果没有,请添加以下代码:
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, __setXHR_, X-Requested-With, Content-Type, user-agent, Accept, X-Auth-Token, X-Amz-Content,Authorization");
res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
next();
});