当前位置: 首页 > 面试题库 >

对localhost nodejs服务器的简单ajax请求

孙玮
2023-03-14
问题内容

我写了非常简单的服务器:

/* Creating server */
var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("Hello World\n");
});

/*Start listening*/
server.listen(8000);

我使用nodejs运行它。

现在我想编写一个简单的客户端,该客户端使用ajax调用将请求发送到服务器并打印响应(Hello World)

clinet的javascript:

$.ajax({
            type: "GET",
            url: "http://127.0.0.1:8000/" ,
            success: function (data) {
            console.log(data.toString);
            }
        });

当我打开客户端html文件时,在控制台中出现以下错误:

XMLHttpRequest cannot load http://127.0.0.1:8000/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

我尝试将以下内容添加到ajax调用中:

 $.ajax({
            type: "GET",
            url: "http://127.0.0.1:8000/" ,
            dataType: 'jsonp',
            crossDomain: true,
            success: function (data) {
            console.log(data.toString);
            }
        });

但后来我明白了

Resource interpreted as Script but transferred with MIME type text/plain: "http://127.0.0.1:8000/?callback=jQuery211046317202714271843_1410340033163&_=1410340033164".

任何人都可以解释我做错了什么,也许如何解决?

非常感谢!


问题答案:

第一个错误是由CORS(跨源资源共享)策略引起的。根据所有浏览器的规定,除非向远程服务器允许通过Access- Control-Allow-Origin标头访问脚本/页面,否则您不能向AJAX中的远程服务器提出请求,而是向当前服务器加载脚本/页面。

我建议从同一Node.js服务器提供页面。然后它将起作用。例如,当请求到达根/页面时,然后提供index.html文件,否则,服务器提供您想要的任何其他内容。

var http = require('http'),
    fs = require('fs');

/* Creating server */
var server = http.createServer(function (request, response) {
    if (request.url == '/' || request.url == '/index.html') {
        var fileStream = fs.createReadStream('./index.html');

        fileStream.pipe(response);
    } else {
        response.writeHead(200, {"Content-Type": "text/plain"});
        response.end("Hello World\n");
    }
});

/*Start listening*/
server.listen(8000);


 类似资料:
  • 正在尝试制作一个android应用程序,该应用程序将与使用noSQL server(应用程序)的本地主机服务器(tomcat apache)通信- 这是我正在使用的界面: 这是我在应用程序中单击按钮时使用的代码: 所以,当我点击按钮时,什么也没发生。(它曾经被压碎,但它停止了)我确信按钮的功能正在被调用。

  • 问题内容: 我在Ubuntu16.04上将Symfony3与PhpStorm.2016.3.2一起使用 我之前从未做过AJAX请求,并且想测试从view->到controller->的控制器调用,该调用将答案发送回JSON中的视图。 所以我读了文档,但它们都很具体。因此,我的愿望是只能在视图中编写一个简单的AJAX请求,以便对其进行测试,调用控制器并在视图中返回答案。 这是我的看法: 我的控制器:

  • 我和Postman一起测试,如果我向标题为,正文为。此调用的响应是一个简单的随机字符串,状态为“200 OK”。我试图用Codename One复制相同的请求,但没有成功,我得到了一个对话框错误,文本为。下面的代码有什么问题? 我还需要对服务器返回的随机字符串进行一些操作(如果成功),但我不知道如何获取该字符串。

  • XMLHttpRequest 对象用于和服务器交换数据。 向服务器发送请求 如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send(); 方法 描述 open(method,url,async) 规定请求的类型、URL 以及是否异步处理

  • 问题内容: 我正在尝试从一个简单的ajax请求中获取值,但是我不知道该怎么做。这是代码: 我到处搜索,没有简单的解释。 谢谢! 问题答案: 可以接受或具有以下界面: PATCH, DELETE headers?: Object; // Optional headers timeout?: number; password?: string; hasContent?: boolean; crossD

  • 主要内容:Web服务器的工作方式,搭建一个简单的 Web 服务器Go语言里面提供了一个完善的 net/http 包,通过 net/http 包我们可以很方便的搭建一个可以运行的 Web 服务器。同时使用 net/http 包能很简单地对 Web 的路由,静态文件,模版,cookie 等数据进行设置和操作。 Web服务器的工作方式 我们平时浏览网页的时候,会打开浏览器,然后输入网址后就可以显示出想要浏览的内容。这个看似简单的过程背后却隐藏了非常复杂的操作。 对于