我正在尝试从 Web 上的 javascript 代码到 Node.js 中的服务器进行简单的连接(请求 - 响应)。
我尝试将请求发送为 follows :
var request = new XMLHttpRequest();
request.open('GET', 'http://localhost:4444/', false);
request.send();
if (request.status === 200) {
console.log(request.responseText);
}
运行此代码时,我在 FireBug 中遇到错误
我继续查找,发现这个方法只是对同一个域进行GET请求。要发出跨域请求,我们必须使用其他策略。
我找到了jQuery method ,看来我的方向是正确的:
$.get(
'http://localhost:4444/',
function(data) {
alert("sucess");
//Do anything with "data"
}
);
在这种情况下,我得到相同的响应 without the error .
看起来它有效,但“警报”消息从未显示!会发生什么?我做错了什么?
Node.js 服务器代码是:
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/html"});
response.write("Response");
response.end();
}).listen(4444);
最佳答案
所以您遇到了跨域问题。您有几个选择:
1) 由于您使用的是 Node,因此请使用 socket.io 。它符合跨域标准。
在客户端:
<script src="Full path to were socket IO is held on your server//socket.io.js"></script>
<script>
var socket = io.connect();
socket.on('some_callback', function(data){
// receive data
});
socket.emit('some_other_callback', {'data': value}); //send data
</script>
服务器:
var io = require('socket.io').listen(server);
// define interactions with client
io.sockets.on('connection', function(socket){
//send data to client
socket.emit('some_callback', {'data': value});
//recieve client data
socket.on('some_other_callback', function(data){
//do something
});
});
2) 由于您只想使用 GET,因此可以使用 JSONP
$.getJSON('url_to_your_domain.com/?callback=?&other_data=something,
function(data){
//do something
}
);
这里我们传递正常的 GET 参数以及回调=?。您将从服务器返回以下内容:
require('url');
var r = url.parse(req.url,true);
r.query.callback + '(' + some JSON + ')'
3) 如果您不关心所有浏览器兼容性,您可以使用 CORS: 你可以看到一个比我能写的更好的例子 Here
关于javascript - javascript 中的 GET 请求到 NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11874746/