带有Nodejs的服务器和带有XMLHttpRequest的客户端

时间:2016-10-21 22:02:52

标签: node.js server xmlhttprequest client

我有这个server.js

var http = require('http');

const PORT = 8000;

http.createServer((req, res) => {
    var msg = req.url.split('/')[1];
    console.log('Recieved: ' + msg);
    var html = '<h3>You sent: ' + msg + '</h3>';
    res.writeHead(200, {"Content-Type": "text/html"});
    res.write(html);
    res.end();
    if (msg == 'end') process.exit();
}).listen(PORT, () => {
    console.log("Server listening on: %s", PORT);
});

和此client.html

<!DOCTYPE html>
<html>

<head>
    <title></title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>
    <textarea id="textArea" rows="4" cols="50"></textarea>
    <br>
    <button onclick=" document.getElementById('textArea').value = '' ">clear</button>
    <button onclick="sendToServer(document.getElementById('textArea').value)">send</button>
    <br>
    <p id="display"></p>

    <script>
    function sendToServer(data) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "http://localhost:8000/" + data, true);
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                document.getElementById("display").innerHTML = xhr.responseText;
            }
        };
        xhr.send();
    }
    </script>
</body>

</html>

服务器从客户端接收数据并在控制台上打印。 但是当服务器将html字符串发送到客户端时,我遇到了问题。客户端没有从服务器接收html字符串。

我该如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

您似乎遇到了 Access-Control-Allow-Origin

的问题

这就是为什么 - 你在客户端有例外

尝试替换此(在服务器脚本上)

 res.writeHead(200, {"Content-Type": "text/html"});

到这个

res.writeHead(200, {"Content-Type": "text/html", "Access-Control-Allow-Origin": "*"});