我正在构建一个网站,该网站使用来自用户的多个字段进行查询,并将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");
}
});
该如何解决?
答案 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
});