微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决对localhost nodejs服务器的简单ajax请求

一个错误是由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);

解决方法

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

/* 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",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".

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

非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。