Javascript 使用HTTP将客户端连接到Node.js服务器

Javascript 使用HTTP将客户端连接到Node.js服务器,javascript,node.js,http,client,httprequest,Javascript,Node.js,Http,Client,Httprequest,用户在本地pc上“收集”数据,并且他们需要能够将数据上传到服务器 我设置了一个简单的node.js服务器,如下所示: var https = require('https'); var fs = require('fs'); var path = require('path'); var options = { key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem') }; var server = htt

用户在本地pc上“收集”数据,并且他们需要能够将数据上传到服务器

我设置了一个简单的node.js服务器,如下所示:

var https = require('https');
var fs = require('fs');
var path = require('path');

var options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};


var server = https.createServer(options, function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/bold'});
    response.end("Server is running");
});
现在我想使用httprequest将一个客户端连接到它。我尝试了JQuery/XMLhttpRequest,但发现了跨源资源共享错误(我知道原因,但我认为我并不想禁用此保护)。我认为可以使用套接字建立连接,但我不确定这是否是一个好的选择。我更希望处理HTTP请求

var xmlhttp, text;
xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', 'http://localhost/file.txt', true);
xmlhttp.send();

//JQuery get
$.get("http://127.0.0.1:1337")

少了什么?请随意询问。

只是一个提示:如果您的客户端应用程序页面不是从运行服务器组件的同一域呈现的,那么您将收到此类错误。此错误意味着您的页面将从另一台服务器访问资源,而不是从源服务器访问资源。所有浏览器都有这样的限制。您可以在服务器上配置为允许从其他域(承载客户端应用的域)访问,或从同一域同时承载客户端应用和服务器。

在第二组代码中将
http://
更改为
https://
。相同来源包括方案/协议。(而且您的服务器代码似乎只是在旋转一个
https
侦听器。:)

您是否从不同的url获取Javascript/HTML,而不是要发送到的节点进程?@YaManicKill,我要获取的HTML是file.txt(应该是HTML文件)我认为由于给定的错误,客户端和服务器驻留在不同的域上,在两个不同的CMD/Terminals中启动。不建议配置以便服务器允许从其他域访问。从同一个域托管客户端应用程序和服务器,如何实现这一点?然后从节点本身托管html应用程序,将它们呈现为静态。但是客户端不应该在Node.js中。或者这只允许client.html文件由Node.js托管?我在服务器端非常缺乏经验,所以详细阐述会有很大帮助。如果您想坚持您的观点“不建议配置服务器以允许从其他域访问”,那么快速选项是通过相同的node.js托管您的html文件(这里node将像一个简单的html服务器一样工作)因此,在这种情况下,您可以解决跨域访问的问题。如果您想要一个单独的http服务器来承载html/js文件,那么在这种情况下,您必须将代理服务器放在两个服务器(节点和承载html页面的ur http服务器)的前面,浏览器应该通过代理访问这些服务器,给人的印象是节点应用程序和html应用程序都位于同一个域中。希望它能帮助您。将其更改为https,但仍然“请求的资源上不存在“Access Control Allow Origin”头。”从CMD运行服务器并在浏览器中打开客户端html。我将尝试通过node.js托管它.“在浏览器中打开客户端html”--您是否使用相同的node.js进程向浏览器提供客户端代码?或者您是将其作为机器上的本地文件打开的--即
文件://
?当我第一次学习Node时,我发现《Node初学者》一书很有用。您可以查看一下,看看您的想法。客户端代码现在使用相同的node.js进程提供给浏览器。所以现在这些请求似乎起作用了。在它在本地开放之前,我认为它是由一个不同的过程“托管”的。我也可以看看那本书!