0

我在 localhost 的机器上运行了一个 rust 服务器,端口:4200。我正在尝试使用使用 axios 库的 JavaScript 客户端向该服务器发出请求。

运行时的代码给出以下错误:

错误:在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1191:14) 处连接 ECONNREFUSED 127.0.0.1:4200

我尝试重写代码以使用 fetch 库。这也返回一个连接被拒绝的错误。

从 Postman 尝试时,API 正在按要求工作。Get 调用也在浏览器中工作。从 JavaScript 调用时,无法找出此调用拒绝连接的原因。

我在 rust 服务器中启用了 CORS 选项。

fn main() {
    let options = rocket_cors::Cors::default();

    rocket::ignite()
        .mount("/", routes![index, sign, generate])
        .attach(options)
        .launch();
}

编辑:

从我的机器运行时出现上述错误的客户端代码:

const fetch = require("node-fetch");

var requestOptions = {
  method: "GET",
  headers: { "Content-Type": "application/json" }
};

fetch("http://localhost:4200/createOffer/1/license", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log("error", error));

在我的机器上运行的浏览器请求: http://localhost:4200/createOffer/1/license

4

1 回答 1

5

尝试点击http://[::1]而不是http://localhost

我最近在尝试对 Rocket 进行性能测试时遇到了类似的问题。从 v0.4.2 开始,Rocket 似乎无法正确响应 ipv4 和 ipv6 请求。

https://github.com/SergioBenitez/Rocket/issues/541 https://github.com/SergioBenitez/Rocket/issues/209

例子:

const fetch = require("node-fetch");

var requestOptions = {
  method: "GET",
  headers: { "Content-Type": "application/json" }
};

fetch("http://[::1]:4200/createOffer/1/license", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log("error", error));
于 2020-01-09T16:44:53.337 回答