Что именно я должен использовать в качестве аргумента 'url' в запросе http, если я запускаю сервер Node.js локально? - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь сделать простой http-запрос на мой локальный сервер (запущенный Node.js).Как должен выглядеть мой нужный URL-адрес?

Я пытаюсь заставить мой веб-сайт вести себя следующим образом: после нажатия кнопки запускается скрипт.Скрипт формирует http-запрос и отправляет его на мой Node-сервер, который я запускаю локально на своем компьютере из командной строки.Сервер Node обрабатывает http-запрос, получает данные из моей базы данных mongodb и отвечает этими данными на мой скрипт.Наконец, скрипт должен выводить данные в виде контента на веб-странице.Проблема в том, что я получаю эту ошибку в консоли браузера:

'Доступ к XMLHttpRequest в' file: /// C: /.../serverSide.js 'из источника' null 'имеетбыл заблокирован политикой CORS: запросы на разные источники поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https. '

Я полагаю, это из-за неверного URL, который я использовалв качестве аргумента в моем http запросе.Все мои файлы (html, скрипт и серверный узел) находятся в одной папке.Я уже использовал следующие значения url: 'serverSide.js', 'http://localhost:8080/', 'localhost:8080', и все они вызвали ошибку, описанную выше.Итак, что я должен использовать в качестве url?

моего сценария:

function textOutput() {

    let xhttp = new XMLHttpRequest();

    xhttp.onreadystatechange = function () {
        if ( this.readyState == 4 && this.status == 200 ) {
            document.getElementById('questionText').innerHTML = 
this.responseText
        }
    };

    xhttp.open('GET', 'serverSide.js', true);
    xhttp.send();
};

вот часть моего сервера, которая обрабатывает запрос:

...
http.createServer(function (req, res) {
    ukrlitquestions.findOne({id: randomId(1, docsAmount)}, 'text', 
function(err, result) {
        if (err) console.log(err);
        let quesText = result.text;
        res.write(quesText);
        console.log(quesText);
        res.end();
    });
}).listen(8080);
...

Ответы [ 4 ]

0 голосов
/ 28 марта 2019

Вам необходимо разрешить CORS с вашего сервера. Вы можете достичь этого, добавив это.

...
http.createServer(function (req, res) {
  res.setHeader('Access-Control-Allow-Origin, '*')
  ...
0 голосов
/ 26 марта 2019

То, что вы видите, является ошибкой CORS.https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Веб-браузер отправляет запрос OPTION перед отправкой реального запроса.URL-адрес должен быть примерно таким: http://localhost:8080/server-side.js

Попробуйте добавить следующее на стороне сервера:

 if (req.method === "OPTIONS") {
    res.sendStatus(200);
  }
0 голосов
/ 26 марта 2019

Open http.open ('GET', 'http://localhost:8080/serverSide.js', true)

0 голосов
/ 26 марта 2019

Вам нужно будет указать правильный домен. Что-то вроде http://localhost:3000/server-side.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...