AJAX GET-запрос заблокирован политикой CORS при доступе к файлам в localhost - PullRequest
0 голосов
/ 07 марта 2019

Я создаю веб-сайт, который принимает запрос с несколькими полями от пользователя и отправляет ajax-запрос на сервер node.js для возврата результатов поиска запроса.Сервер работает на локальном хосте.Но когда я отправляю запрос и отправляю запрос на получение через 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 для проекта, поэтому я использую чистый узел.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 голосов
/ 07 марта 2019

Попробуйте добавить '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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...