访问localhost

时间:2019-03-07 05:24:49

标签: node.js ajax server cors

我正在构建一个网站,该网站使用来自用户的多个字段进行查询,并将ajax请求发送到node.js服务器以返回查询搜索结果。服务器正在本地主机上运行。但是,当我提交查询并通过ajax发送get请求时,它被CORS策略阻止。我四处搜寻,发现有关服务器阻止其他域访问该服务器,但是如果我从正在运行的计算机服务器访问这些文件,它是否仍视为不同的域。另外,我尝试使用以下代码在服务器代码中设置请求标头,但仍然无法正常工作。

http.createServer(function (request, response) {
const headers = {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'OPTIONS, POST, GET',
    'Access-Control-Max-Age': 2592000, 
};
});

我不能在项目中使用express,所以我使用的是纯node.js。

这是我的ajax请求。

$.ajax({
    type: "GET",
    url: "localhost:8080",
    data: { action: 'search_tutors', homeTown: $('#homeTown').val() },
    cache: false,
    success: function (results) {
        showResults(results);
    },
    error: function (request, err) {

        alert(err);
        console.log(err);
    },
    done: function () {
        alert("Done");
        console.log("Done");
    }
});

该如何解决?

1 个答案:

答案 0 :(得分:0)

尝试将'Access-Control-Allow-Headers', '*''Access-Control-Request-Method', '*'添加到标题中

var server;
server = http.createServer(function(req,res){
    // Set CORS headers
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Request-Method', '*');
    res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, POST, GET');
    res.setHeader('Access-Control-Allow-Headers', '*');
    if ( req.method === 'OPTIONS' ) {
        res.writeHead(200);
        res.end();
        return;
    }

// other codes
});