如果我在本地运行Node.js服务器,我到底应该在http请求中使用什么作为参数'url'?

时间:2019-03-25 22:53:24

标签: javascript node.js ajax http mongoose

我正在尝试向本地服务器发出一个简单的http请求(由Node.js运行)。我所需的网址应该是什么样的?

我正在尝试使我的网站以另一种方式运行:单击按钮后,将运行脚本。脚本形成http请求并将其发送到我的Node服务器,该服务器通过命令行在本地计算机上运行。节点服务器处理http请求,从我的mongodb数据库中获取数据,并用此数据响应我的脚本。最后,脚本必须将数据作为内容输出到网页上。问题是我在浏览器控制台中收到此错误:

  

“访问来自'file:/// C:/.../serverSide.js的XMLHttpRequest”   原点“空”已被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 :(得分:0)

您需要指向正确的域。像http://localhost:3000/server-side.js

答案 1 :(得分:0)

您看到的是CORS错误。 https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Web浏览器在发送真实请求之前先发送一个OPTION请求。网址应类似于http://localhost:8080/server-side.js

尝试将以下内容添加到服务器端:

 if (req.method === "OPTIONS") {
    res.sendStatus(200);
  }

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您需要允许服务器上的CORS。您可以通过添加它来实现。

server {
    listen 80;

    allow 123.123.123.123;
    deny all;
    error_page 403 $scheme://test.com;

    root /var/www/html;

    index index.php;

    server_name stg.test.com;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
    }
}