Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Передача данных с (https://javascript.ru/forum/node-js-io-js/56419-peredacha-dannykh-s.html)

andryxx 15.06.2015 13:05

Передача данных с
 
Всем привет.
Заранее прошу прощения, если мой вопрос слишком глупый. Это мой первый опыт с Node JS, в интернетах ответа мне не удалось найти :(

У меня достаточно простая задача: есть сервис на node.js, который должен по запросу передавать данные клиенту (html с java-script) в формате json. Задача достаточно типовая, но никак не получается ее реализовать :help:

HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>
	function log(msg){myDIV.innerHTML += msg+"<br/>";}
  
	function start(){
		var dataSource = 'http://127.0.0.1:8080/';
		var xhr = new XMLHttpRequest();

		xhr.open('POST', dataSource, true);
		xhr.send();

		xhr.onreadystatechange = function() {
			if (xhr.readyState != 4) return;
			if (xhr.status != 200) {
				log('Ошибка '+xhr.status + ': ' + xhr.statusText);
			} else {
				log(xhr.responseText);
			}
		}
	}
</script>
</head>
<body>
<button onclick="start()">Старт</button>
<div id="myDIV"></div>
</body>
</html>


Node JS:
var http = require('http');
var server = new http.Server();
server.listen(8080, '127.0.0.1');
server.on('request', function(req, res) {
	var json = {
		name:"my JSON Object",
		value:"kuku!"
	};
	console.log('%s request submited', (new Date()).toISOString());
	res.writeHead(200, {"Content-Type": "application/json"});
	res.end(JSON.stringify(json));
});


Если со страницы клиента клацать кнопку "Старт" - в консоли ноды появляется сообщение о поступившем запросе. Но клиент так и не получает данные - в соответствующий ДИВ записывается "Ошибка 0: ".

Браузер по адресу http://127.0.0.1:8080/ показывает строку с валидным JSON
Файрвол и антивирус отключил...

Помогите разобраться, что и где я упустил, плиз.

Malleys 28.06.2015 19:57

В браузере возникает ошибка: XMLHttpRequest cannot load http://127.0.0.1:8080/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

Значит необходимо, чтобы в ответе от сервера на этот запрос был заголовок Access-Control-Allow-Origin: *

var server = new (require('http').Server)();
server.listen(8080, '127.0.0.1');
server.on('request', function(req, res) {
  if(req.url == "/") {
	  var json = {
	  	name:"my JSON Object",
	  	value:"kuku!"
	  };
	  console.log('%s request submited', (new Date()).toISOString());
	  res.writeHead(200, {
      "Content-Type": "application/json",
      "Access-Control-Allow-Origin": "*"
    });
    res.write(JSON.stringify(json));
  }
	res.end();
});


Часовой пояс GMT +3, время: 13:17.