#node.js #ajax #server #cors
#node.js #ajax #сервер #cors
Вопрос:
Я создаю веб-сайт, который принимает запрос с несколькими полями от пользователя и отправляет ajax-запрос на node.js сервер для возврата результатов поиска запроса. Сервер запущен на localhost. Но когда я отправляю запрос и получаю запрос через ajax, он блокируется политикой 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:
Попробуйте добавить '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
});